Créer un gros fichier JAR - Maven Assembly Plugin

Créer un gros fichier Jar - Plugin d'assemblage Maven

java jar with 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:

  1. Maven shade plugin résout cela en utilisant une technique commeclass relocating.

  2. 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

one-jar-folder-structure

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.

  1. dateutils.jar – Only your project classes

  2. 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)