In JShell, how to import classpath from a Maven project

后端 未结 3 598
借酒劲吻你
借酒劲吻你 2020-12-05 03:14

I have a local Maven project under development. How can I launch jshell with the project class path with all the dependencies, so that I can test project or dep

相关标签:
3条回答
  • 2020-12-05 03:35

    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
    

    gist link

    Thanks Jay for pointing out -DincludeTypes=jar maven option.

    0 讨论(0)
  • 2020-12-05 03:41

    You can use the jshell-maven-plugin:

    mvn com.github.johnpoth:jshell-maven-plugin:1.3:run
    

    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.

    Enjoy!

    0 讨论(0)
  • 2020-12-05 03:47

    See In Maven, how to output the classpath being used?.

    According to:

    jshell --help
    

    run JShell with:

    jshell --class-path <path>
    
    0 讨论(0)
提交回复
热议问题