Wenn Sie (so wie ich) nicht besonders auf die jar-with-dependencies oben beschriebenen Ansatz, die von mir bevorzugte Maven-Lösung besteht darin, einfach ein WAR-Projekt zu erstellen, auch wenn es nur eine eigenständige Java-Anwendung ist, die Sie bauen:
-
Erstellen Sie ein normales maven jar-Projekt, das Ihre jar-Datei (ohne die Abhängigkeiten) erstellt.
-
Richten Sie außerdem ein Maven-War-Projekt ein (mit nur einem leeren src/haupt/webapp/WEB-INF/web.xml Datei, die eine Warnung/Fehler beim Maven-Build vermeidet), die nur Ihr jar-Projekt als Abhängigkeit hat, und machen Sie Ihr jar-Projekt zu einer <module>
unter Ihrem Kriegsprojekt. (Dieses war-project ist nur ein einfacher Trick, um alle Ihre jar-Datei-Abhängigkeiten in eine zip-Datei zu packen).
-
Erstellen Sie das War-Projekt, um die War-Datei zu erzeugen.
-
Im Deployment-Schritt benennen Sie Ihre .war-Datei einfach in *.zip um und entpacken sie.
Sie sollten nun ein lib-Verzeichnis (das Sie beliebig verschieben können) mit Ihrem jar und allen Abhängigkeiten haben, die Sie zum Ausführen Ihrer Anwendung benötigen:
java -cp 'path/lib/*' MainClass
(Der Platzhalter im Klassenpfad funktioniert in Java-6 oder höher)
Ich denke, dass dies sowohl einfacher in Maven einzurichten ist (keine Notwendigkeit, mit dem Assembly-Plugin herumzupfuschen), als auch eine klarere Sicht auf die Anwendungsstruktur bietet (Sie sehen die Versionsnummern aller abhängigen Jars auf einen Blick und vermeiden es, alles in eine einzige Jar-Datei zu packen).