2017-12-07 4 views
2

Ich habe ein lokales Maven-Projekt in der Entwicklung. Wie kann ich jshell mit dem Projektklassenpfad mit allen Abhängigkeiten starten, so dass ich Projekt- oder Abhängigkeitsklassen in JShell testen kann.In JShell, wie Klassenpfad aus einem Maven-Projekt zu importieren

+0

Dies scheint ein nützlicher Anwendungsfall zu sein, der von jshell-Tutorials oder anderswo nicht eindeutig behandelt wird. – Jay

+0

Was ist mit der Verwendung von exec-Maven-Plugin? – khmarbaise

+0

Suchen Sie eine Befehlszeilenlösung? Hier ist eine IDE-spezifische Lösung: https://stackoverflow.com/questions/48143960/how-to-import-a-custom-class-in-intellij-jshell-console – Jay

Antwort

1

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

Nach:

jshell --help 

Laufe JShell mit:

jshell --class-path <path> 
+0

Dies gibt Ihnen die Abhängigkeitsklassen, aber nicht das Projekt Klassen. Gibt es einen einfachen Weg, diese auch einzuschließen, so dass Sie eine REPL für Ihr gesamtes Projekt verwenden können? – Jay

+0

Könnten Sie dies mit einem funktionierenden Beispiel oder einer detaillierten Erklärung aktualisieren, wie funktioniert das eigentlich für Sie? – nullpointer

2

ich einen einfachen Shell-Skript in der Ausführung Suchpfad setzen schrieb:

Shell-Skript-Datei: mShell

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

Dann im Maven Projektverzeichnis (für Projekt mit mehreren Modulen, stellen Sie sicher, statt übergeordnetes Verzeichnis in dem Modul-Verzeichnis) auszuführen:

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

Dank Jay für den Hinweis auf -DincludeTypes = jar Maven Option.

+2

Wenn Sie mvn-Abhängigkeit verwenden: build-classpath -DincludeTypes = jar, dann werden die Pom-Abhängigkeiten nicht berücksichtigt. – Jay

+0

Ich wundere mich, hat das tatsächlich funktioniert? Ich habe versucht, mit einem Beispielprojekt die Klassen aus dem gleichen zu nutzen, habe es aber versäumt. Wenn Sie das bestätigen könnten, könnte ich einen anderen Thread erstellen und das Problem darstellen, dem ich gegenüberstehe. – nullpointer

+0

Das Mshell-Skript funktioniert für mich. Sie müssen erst maven build erstellen, damit das Verzeichnis "target" generiert wird. –

Verwandte Themen