mirror of
https://github.com/SpencerPark/IJava.git
synced 2025-04-16 03:16:21 +00:00
Support adding directories to the classpath for including local projects. See #45.
This commit is contained in:
parent
ed1c8fe1df
commit
7e0da04cfe
@ -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())
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -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;
|
Loading…
x
Reference in New Issue
Block a user