Erstellen Sie eine fette Jar-Datei - Maven Assembly Plugin
In diesem Tutorial zeigen wir Ihnen, wie Sie mitMaven Assembly Plugin ein Fett- / Überglas erstellen. Das heißt, Sie erstellen ein Jar zusammen mit seinen Abhängigkeits-Jars in einer einzigen ausführbaren Jar-Datei.
Note
Das Maven-Assembly-Plugin ist nicht gut für die Herstellung von Fett / Überglas. Es kann zu Namenskonflikten führen. Es ist besser, andere Maven-Plugins zu verwenden, wie:
-
Maven shade plugin lösen dies mit Techniken wieclass relocating.
-
Maven one-jar plugin, fügen Sie die Abhängigkeits-JAR-Datei direkt in die Projekt-JAR ein und laden Sie sie mit einem benutzerdefinierten Klassenladeprogramm.
1. Überprüfen Sie ein Java-Projekt
Vorheriges Java-Projekt (dateutils) wird wiederverwendet, siehe folgende Ordnerstruktur
Note
Dieses Projekt hat eine einzige Abhängigkeit -joda-time.jar
2. Pom.xml
Lesen Sie den folgenden Kommentar zur Selbsterklärung.
pom.xml
4.0.0 com.example.core.utils dateUtils jar 1.0-SNAPSHOT dateUtils http://maven.apache.org 1.7 2.5 4.11 junit junit ${junit.version} test joda-time joda-time ${jodatime.version} dateutils org.apache.maven.plugins maven-eclipse-plugin 2.9 true false org.apache.maven.plugins maven-compiler-plugin 2.3.2 ${jdk.version} ${jdk.version} org.apache.maven.plugins maven-assembly-plugin 2.4.1 jar-with-dependencies com.example.core.utils.App make-assembly package single
3. Paket es
Das obige "Maven Assembly Plugin" ist an die Verpackungsphase des Maven gebunden. Um das endgültige Glas herzustellen, verpacken Sie es einfach:
$ mvn package [INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ dateUtils --- [INFO] Building jar: /Users/example/dateUtils/target/dateutils.jar [INFO] [INFO] --- maven-assembly-plugin:2.4.1:single (make-assembly) @ dateUtils --- [INFO] Building jar: /Users/example/dateUtils/target/dateutils-jar-with-dependencies.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4.325s [INFO] Finished at: Tue Oct 21 13:44:41 MYT 2014 [INFO] Final Memory: 17M/42M [INFO] ------------------------------------------------------------------------
Im JAR-Ordnertarget
werden zwei JAR-Dateien erstellt.
-
dateutils.jar – Only your project classes
-
dateutils-jar-with-dependencies.jar – Project and dependency classes in a single jar.
4. Überprüfen Sie es
Listen Sie den Inhalt vondateutils-jar-with-dependencies.jar
auf
$ jar tf target/dateutils-jar-with-dependencies.jar META-INF/ META-INF/MANIFEST.MF org/ org/joda/ org/joda/time/ org/joda/time/base/ org/joda/time/chrono/ org/joda/time/tz/ZoneInfoCompiler$DateTimeOfYear.class org/joda/time/tz/ZoneInfoCompiler$Rule.class org/joda/time/tz/ZoneInfoCompiler$RuleSet.class org/joda/time/tz/ZoneInfoCompiler$Zone.class org/joda/time/tz/ZoneInfoCompiler.class org/joda/time/tz/ZoneInfoProvider.class org/joda/time/UTCDateTimeZone.class org/joda/time/Weeks.class org/joda/time/YearMonth$Property.class org/joda/time/YearMonth.class org/joda/time/YearMonthDay$Property.class org/joda/time/YearMonthDay.class org/joda/time/Years.class META-INF/maven/ META-INF/maven/joda-time/ META-INF/maven/joda-time/joda-time/ META-INF/maven/joda-time/joda-time/pom.xml META-INF/maven/joda-time/joda-time/pom.properties com/ com/example/ com/example/core/ com/example/core/utils/ com/example/core/utils/App.class META-INF/maven/com.example.core.utils/ META-INF/maven/com.example.core.utils/dateUtils/ META-INF/maven/com.example.core.utils/dateUtils/pom.xml META-INF/maven/com.example.core.utils/dateUtils/pom.properties
MANIFEST.MF
Manifest-Version: 1.0 Built-By: example Build-Jdk: 1.7.0_05 Created-By: Apache Maven 3.1.1 Main-Class: com.example.core.utils.App Archiver-Version: Plexus Archiver
Starte es
$ java -jar target/dateutils-jar-with-dependencies.jar 2014-10-21
Quellcode herunterladen
Laden Sie es herunter -dateUtils-maven-assembly-plugin.zip (7 KB)