Ich bin relativ neu im Maven-Mantra, aber ich versuche, mit Maven ein ausführbares Kommandozeilen-Jar zu erstellen. Ich habe meine Abhängigkeiten eingerichtet, aber wenn ich mvn install
das Glas ausführe und versuche, es auszuführen, passieren zwei Dinge. Erstens wird keine Hauptklasse gefunden, was korrigierbar ist. Wenn ich dies korrigiert habe, erhalte ich beim Ausführen Fehler, die darauf hinweisen, dass Klassen nicht gefunden werden können.
Maven packt meine Abhängigkeitsbibliotheken nicht in das JAR, daher kann ich das JAR nicht als eigenständige Anwendung ausführen. Wie korrigiere ich das?
java
maven-2
build-process
executable-jar
Stefan Kendall
quelle
quelle
Antworten:
Der einfachste Weg, dies zu tun, besteht darin, eine Assembly mit dem
maven-assembly-plugin
und dem vordefiniertenjar-with-dependencies
Deskriptor zu erstellen . Sie müssen auch ein Manifest mit einem Hauptklasseneintrag für dieses Überglas erstellen. Das folgende Snippet zeigt, wie Sie das Assembly-Plugin dafür konfigurieren:Führen Sie zum Generieren der Assembly einfach Folgendes aus:
Wenn Sie die Assembly als Teil Ihres Builds generieren möchten, binden Sie das
assembly:single
Mojo einfach an die Paketphase:Und einfach laufen lassen:
quelle
assembly:assembly
Ziel ist veraltetMaven packt Ihre Abhängigkeiten nicht in Ihre JAR-Datei, da Sie dies normalerweise nicht mit Java-Programmen tun.
Stattdessen liefern Sie die Abhängigkeiten zusammen mit Ihrer JAR - Datei und nennen sie in der
Class-Path
Kopfzeile des Manifests .Um diesen Weg zu gehen, müssen Sie die
addClasspath
Eigenschaft ( hier dokumentiert ) für das aktivierenmaven-jar-plugin
.Wenn Sie wirklich alle Ihre Abhängigkeiten in Ihre JAR-Datei aufnehmen möchten, können Sie das Maven Assembly-Plugin verwenden, um eine zu erstellen
jar-with-dependencies
.quelle
Das würde ich für kleine Projekte tun. Meistens willst du kein einziges großes Glas.
zu erstellen: mvn clean dependency: copy-dependencies package
auszuführen ( im Zielverzeichnis ): java -cp myjar.jar: ./ dependency / * com.something.MyClass
quelle
Ich stimme Joachim Sauer zu,
Anstatt jar-with-dependency zu verwenden, sollten Sie das jar-Plugin in Ihrer pom.xml folgendermaßen konfigurieren:
Verwenden Sie diese Assemblykonfiguration, um die JAR-Abhängigkeiten zu Ihrer Assembly hinzuzufügen:
quelle
Fügen Sie einfach den folgenden Code in pom.xml ein und führen Sie ihn aus als: maven: install. Das JAR wird im Zielordner von Eclipse erstellt, der als "java -jar Hello.jar" verwendet werden kann. Stellen Sie jedoch sicher, dass der Name der Hauptklasse com.abc.HelloWorld.java lautet
quelle