Créer un gros fichier Jar - Plugin d'assemblage Maven
Dans ce tutoriel, nous allons vous montrer comment créer un pot fat / uber avecMaven Assembly Plugin. Ce qui signifie créer un Jar avec ses Jars de dépendance dans un seul fichier Jar exécutable.
Note
Le plugin d'assemblage Maven n'est pas bon pour produire un pot fat / uber, il peut causer un problème de conflit de nom, il est préférable d'utiliser d'autres plugins Maven comme:
-
Maven shade plugin résout cela en utilisant une technique commeclass relocating.
-
Maven one-jar plugin, ajoutez le fichier jar de dépendance directement dans le fichier jar du projet et le charge avec un chargeur de classe personnalisé.
1. Examiner un projet Java
Le projet Java précédent (dateutils) sera réutilisé, voir la structure de dossiers suivante
Note
Ce projet a une seule dépendance -joda-time.jar
2. Pom.xml
Lisez le commentaire ci-dessous pour plus d'explications.
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. Emballez-le
Ci-dessus, "Maven Assembly Plugin" est lié à la phase de packaging de Maven, pour produire le Jar final, il suffit de le conditionner:
$ 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] ------------------------------------------------------------------------
Deux fichiers jar seront créés dans le dossiertarget
.
-
dateutils.jar – Only your project classes
-
dateutils-jar-with-dependencies.jar – Project and dependency classes in a single jar.
4. Révise le
Répertoriez le contenu dedateutils-jar-with-dependencies.jar
$ 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
Exécuter
$ java -jar target/dateutils-jar-with-dependencies.jar 2014-10-21
Télécharger le code source
Téléchargez-le -dateUtils-maven-assembly-plugin.zip (7 Ko)