Support adding directories to the classpath for including local projects. See #45.

This commit is contained in:
SpencerPark 2019-05-04 23:22:29 -04:00
parent ed1c8fe1df
commit 7e0da04cfe
3 changed files with 60 additions and 16 deletions

View File

@ -24,6 +24,8 @@
package io.github.spencerpark.ijava;
import io.github.spencerpark.ijava.execution.*;
import io.github.spencerpark.ijava.magics.ClasspathMagics;
import io.github.spencerpark.ijava.magics.MavenResolver;
import io.github.spencerpark.jupyter.kernel.BaseKernel;
import io.github.spencerpark.jupyter.kernel.LanguageInfo;
import io.github.spencerpark.jupyter.kernel.ReplacementOptions;
@ -96,21 +98,7 @@ public class JavaKernel extends BaseKernel {
this.magicsTransformer = new MagicsSourceTransformer();
this.magics = new Magics();
this.magics.registerMagics(this.mavenResolver);
this.magics.registerLineMagic("jars", args -> {
List<String> jars = args.stream()
.map(GlobFinder::new)
.flatMap(g -> {
try {
return StreamSupport.stream(g.computeMatchingPaths().spliterator(), false);
} catch (IOException e) {
throw new RuntimeException("Exception resolving jar glob", e);
}
})
.map(p -> p.toAbsolutePath().toString())
.collect(Collectors.toList());
jars.forEach(this::addToClasspath);
return jars;
});
this.magics.registerMagics(new ClasspathMagics(this::addToClasspath));
this.languageInfo = new LanguageInfo.Builder("Java")
.version(Runtime.version().toString())

View File

@ -0,0 +1,56 @@
package io.github.spencerpark.ijava.magics;
import io.github.spencerpark.jupyter.kernel.magic.registry.LineMagic;
import io.github.spencerpark.jupyter.kernel.util.GlobFinder;
import java.io.IOException;
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
public class ClasspathMagics {
private final Consumer<String> addToClasspath;
public ClasspathMagics(Consumer<String> addToClasspath) {
this.addToClasspath = addToClasspath;
}
@LineMagic
public List<String> jars(List<String> args) {
List<String> jars = args.stream()
.map(GlobFinder::new)
.flatMap(g -> {
try {
return StreamSupport.stream(g.computeMatchingFiles().spliterator(), false);
} catch (IOException e) {
throw new RuntimeException("Exception resolving jar glob", e);
}
})
.map(p -> p.toAbsolutePath().toString())
.collect(Collectors.toList());
jars.forEach(this.addToClasspath);
return jars;
}
@LineMagic
public List<String> classpath(List<String> args) {
List<String> paths = args.stream()
.map(GlobFinder::new)
.flatMap(g -> {
try {
return StreamSupport.stream(g.computeMatchingPaths().spliterator(), false);
} catch (IOException e) {
throw new RuntimeException("Exception resolving jar glob", e);
}
})
.map(p -> p.toAbsolutePath().toString())
.collect(Collectors.toList());
paths.forEach(this.addToClasspath);
return paths;
}
}

View File

@ -21,7 +21,7 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package io.github.spencerpark.ijava;
package io.github.spencerpark.ijava.magics;
import io.github.spencerpark.ijava.magics.dependencies.CommonRepositories;
import io.github.spencerpark.ijava.magics.dependencies.Maven;