在JShell中,如何从Maven项目导入类路径

时间:2017-12-07 22:40:26

标签: maven classpath java-9 jshell

我正在开发一个本地Maven项目。如何使用包含所有依赖项的项目类路径启动jshell,以便我可以在JShell中测试项目或依赖项类。

3 个答案:

答案 0 :(得分:14)

您可以使用jshell-maven-plugin:

Aggregation aggregation = Aggregation.newAggregation(...);
AggregationResults<Foo> r = mongoTemplate.aggregate(aggregation, "foos", Foo.class);
List<Foo> foos = r.getMappedResults();

将使用项目的运行时路径启动JShell会话。如果要包含测试依赖项,只需在命令中添加-DtestClasspath即可。

源代码:https://github.com/johnpoth/jshell-maven-plugin;欢迎捐款:)完全免责声明:我写了插件。

享受!

答案 1 :(得分:10)

我在执行搜索路径中写了一个简单的shell脚本:

Shell脚本文件: mshell (对于* inux)

mvn dependency:build-classpath -DincludeTypes=jar -Dmdep.outputFile=.cp.txt
jshell --class-path `cat .cp.txt`:target/classes

Shell脚本文件: mshell (对于Windows cmd.exe)

mvn dependency:build-classpath -DincludeTypes=jar -Dmdep.outputFile=.cp.txt
for /F %i in (.cp.txt) do jshell --class-path "%i;target/classes"

然后在maven项目目录中(对于多模块项目,确保在模块目录而不是父目录中),运行:

$ cd $MAVEN_PROJECT_HOME   #make sure module folder for multi-module project
$ mshell

gist link

感谢Jay指出-DincludeTypes = jar maven选项。

答案 2 :(得分:2)

请参阅In Maven, how to output the classpath being used?

根据:

jshell --help

运行JShell:

jshell --class-path <path>