In JShell, how to import classpath from a Maven project
You can use the jshell-maven-plugin:
which will fire up a JShell session with your project's runtime path. If you want to include your test dependencies just add -DtestClasspath to the command.
NOTE: the plugin expects the project to be built already. If not, invoke the appropriate Maven build phase before the plugin e.g:
mvn [install|compile|test-compile] com.github.johnpoth:jshell-maven-plugin:1.3:run
Source code: https://github.com/johnpoth/jshell-maven-plugin; contributions are welcome :) full disclaimer: I wrote the plugin.
I wrote a simple shell script put in the execution search path:
Shell script file: mshell (for *inux)
mvn dependency:build-classpath -DincludeTypes=jar -Dmdep.outputFile=.cp.txt jshell --class-path `cat .cp.txt`:target/classes
Shell script file: mshell (for 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"
Then in the maven project directory (for multi-module project, make sure in the module directory instead of parent directory), run:
$ cd $MAVEN_PROJECT_HOME #make sure module folder for multi-module project $ mshell
Thanks Jay for pointing out -DincludeTypes=jar maven option.
See In Maven, how to output the classpath being used?.
run JShell with:
jshell --class-path <path>