fatのJarファイルを作成する - Maven Assembly Plugin

ファットJarファイルの作成– Mavenアセンブリプラグイン

java jar with maven

このチュートリアルでは、Maven Assembly Pluginを使用してfat / uberjarを作成する方法を示します。 つまり、Jarとその依存関係Jarsを1つの実行可能なJarファイルに作成します。

Note
Mavenアセンブリプラグインはfat / uber jarの生成に適していません。名前の競合の問題が発生する可能性があります。次のような、他のMavenプラグインを使用することをお勧めします。

  1. Maven shade pluginは、class relocating.のような手法を使用してこれを解決します

  2. Maven one-jar plugin、依存関係jarファイルをプロジェクトjarに直接追加し、カスタムクラスローダーでロードします。

1. Javaプロジェクトを確認する

以前のJavaプロジェクト(dateutils)が再利用されます。次のフォルダ構造を参照してください。

one-jar-folder-structure

Note
このプロジェクトには単一の依存関係があります–joda-time.jar

2. Pom.xml

以下のコメントを読んでください。

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. パッケージ化

上記の「Maven Assembly Plugin」は、Mavenのパッケージ化フェーズにバインドされており、最終的なJarを生成するためにパッケージ化します。

$ 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] ------------------------------------------------------------------------

2つのjarファイルがtargetフォルダーに作成されます。

  1. dateutils.jar – Only your project classes

  2. dateutils-jar-with-dependencies.jar – Project and dependency classes in a single jar.

4. レビューする

dateutils-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

それを実行します

$ java -jar target/dateutils-jar-with-dependencies.jar

2014-10-21

ソースコードをダウンロード

ダウンロード–dateUtils-maven-assembly-plugin.zip(7 KB)