Aufbau einer fat jar mit maven
Habe ich eine code-Basis, die ich verteilen soll als jar. Darauf haben sich auch die Abhängigkeit von externen jars, die ich will, zu bündeln und in der letzten Glas.
Ich habe gehört, dass dies gemacht werden kann maven-assembly-plug-in
, aber ich verstehe nicht, wie. Könnte mir jemand zeigen einige Beispiele.
Gerade jetzt, ich bin mit fat-jar zu bündeln, das Letzte Glas. Ich will, das gleiche zu erreichen mit maven.
InformationsquelleAutor bianca | 2013-04-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinweis: Wenn Sie eine spring-boot-Anwendung, Lesen Sie das Ende der Antwort
Fügen Sie folgenden plugin, um Ihre
pom.xml
Die neueste version finden Sie unter https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-assembly-plugin
Nach der Konfiguration dieses plug-in, läuft
mvn package
produzieren zwei Gläser: das eine enthält nur die Projekt-Klassen, und eine zweite fat jar mit allen Abhängigkeiten, die mit dem suffix "-jar-with-dependencies".wenn Sie möchten, korrigieren
classpath
setup zur Laufzeit dann auch fügen Sie folgenden pluginFür spring-boot-Anwendung verwenden Sie einfach die folgenden plugin (wählen Sie die entsprechende version)
Diese ist nun veraltet und das maven-shade-plugin sollte stattdessen verwendet werden. Siehe @phlogratos Antwort: stackoverflow.com/a/16222965/274350.
Kann maven-assembly-plugin minimieren Sie die Größe von fat-jar?
Wo siehst du, es ist veraltet ? Ich konnte nicht finden, dass irgendetwas um Sie hier maven.apache.org/plugins/maven-assembly-plugin
vielleicht das falsche Wort, aber die Dokumentation unter maven.apache.org/plugins/maven-assembly-plugin sagt: "Wenn das Projekt will in einem Paket Artefakt in ein uber-jar, die assembly-plugin bietet nur Basis-support. Für mehr Kontrolle, verwenden Sie das Maven-Shade-Plugin."
InformationsquelleAutor Jigar Joshi
Können Sie die maven-shade-plugin.
Nach der Konfiguration der Schatten-plugin in deinem build den Befehl
mvn package
erstellen einer einzigen jar mit allen Abhängigkeiten zusammengeführt.Aber wie kann ich das single .Glas und verwenden Sie es für die Veröffentlichung?
InformationsquelleAutor phlogratos
Vielleicht möchten Sie
maven-shade-plugin
-, bundle-Abhängigkeiten minimieren ungenutzten code und ausblenden, externe Abhängigkeiten zu vermeiden.Referenzen:
Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found
sind, entfernen Sie einfach<minimizeJar>true</minimizeJar>
.Wenn du einen "java.lang.SecurityException: Ungültige Signatur-Datei Manifest-digest für Haupt-Attribute" Ausnahme, dann wird dieser zusätzlich zu den oben genannten Konfiguration Abschnitt hilft: stackoverflow.com/a/6743609/38368
InformationsquelleAutor ggrandes
tatsächlich, indem die
Erklärung zu maven-jar-plugin nicht hinzufügen die main-class-Eintrag, um die manifest-Datei für mich.
Ich hatte auf hinzufügen, um den maven-assembly-plugin, um zu bekommen, dass in der manifest -
InformationsquelleAutor user3169330
Können Sie die onejar-maven-plugin für die Verpackung. Im Grunde, Sie setzt Ihr Projekt und Ihre Abhängigkeiten in so einem Glas, darunter nicht nur Ihre Projekt-jar-Datei, sondern auch alle externen Abhängigkeiten als "jar jar", z.B.
Hinweis 1: Konfigurations-Optionen ist verfügbar auf der Projekt -Startseite.
Hinweis 2: Für einen oder anderen Grund, die onejar-maven-plugin-Projekt wird nicht veröffentlicht Maven Central. Allerdings jolira.com tracks der original-Projekt und veröffentlicht es, um mit der groupId
com.jolira
.Ich sehe auch eine-jar-Zeug gebündelt in final jar zu. Diese erhöhte Größe des endgültigen jar viel. Ist es möglich zu wählen, externe jar-Dateien, die Sie einschließen möchten in der letzten Dose? Hier ist die one-jar-Protokolle: pastebin.com/UwniQJ2X
Ich weiß nicht, ob Sie können konfigurieren, was enthalten ist oder nicht. Im Grunde, one-jar beinhaltet alle Abhängigkeiten angegeben werden, die von Ihrem Projekt, einschließlich transitive Abhängigkeiten, also ja, das Letzte Glas ist wahrscheinlich zu groß, wenn Sie haben eine Menge von Abhängigkeiten. Einige overhead Hinzugefügt werden, indem eine-jar-Datei, um Java-arbeiten mit dem "jar jar" - Struktur.
InformationsquelleAutor matsev
Alternative ist die Verwendung des maven - Schatten plugin zum erstellen einer
uber-jar
.InformationsquelleAutor Stanislav