maven-shade-pluginパッケージを使用してすべての依存jarパッケージをパッケージ化

7349 ワード

1. Why?
すべての依存jarパケットを含むmaven-shade-pluginによってuber-jarが生成されます.
2. Goals
Goal
Description
shade:help
Display help information on maven-shade-plugin.Callmvn shade:help -Ddetail=true -Dgoal=to display parameter details.
shade:shade
Mojo that performs shading delegating to the Shader component.
3. Usage
  • maven-shade-plugin
  • の構成
    maven-shade-pluginはgoal shade:shadeをphase packageにバインドします.
     
         
             
                 org.apache.maven.plugins
                 maven-shade-plugin
                 2.4.3
                 
                     
                 
                 
                     
                         package
                         
                             shade
                         
                     
                 
             
         
     
  • 実行コマンド
  • mvn clean package

    -shaded.jarを接尾辞とするuber-jarパッケージがtargetファイルに生成されます.
    4. Examples
  • Selecting Contents for Uber JAR

  • このプロジェクトに依存するJarパッケージの一部をinclude/excludeから削除します.
    
        
          
            org.apache.maven.plugins
            maven-shade-plugin
            2.4.3
            
              
                package
                
                  shade
                
                
                  
                    
                      classworlds:classworlds
                      junit:junit
                      jmock:*
                      *:xml-apis
                      org.apache.maven:lib:tests
                      log4j:log4j:jar:
                    
                  
                
              
            
          
        
    

    依存するJarパッケージ内のクラスまたはリソースinclude/excludeを削除します.
    
        
          
            org.apache.maven.plugins
            maven-shade-plugin
            2.4.3
            
              
                package
                
                  shade
                
                
                  
                    
                      junit:junit
                      
                        junit/framework/**
                        org/junit/**
                      
                      
                        org/junit/experimental/**
                        org/junit/runners/**
                      
                    
                    
                      *:*
                      
                        META-INF/*.SF
                        META-INF/*.DSA
                        META-INF/*.RSA
                      
                    
                  
                
              
            
          
        
    

    maven-shade-pluginは、使用しないすべてのクラスを自動的に排除し、uber-jarを最小化します.
      
        
          
            org.apache.maven.plugins
            maven-shade-plugin
            2.4.3
            
              
                package
                
                  shade
                
                
                  true
                
              
            
          
        
      
  • Attaching the Shaded Artifact

  • デフォルトでは、Jarパッケージと「-shaded」で終わるuber-jarパッケージが生成され、uber-jarの接尾辞名を設定することで指定できます.
      
        
          
            org.apache.maven.plugins
            maven-shade-plugin
            2.4.3
            
              
                package
                
                  shade
                
                
                  true
                  jackofall 
                
              
            
          
        
      
  • Executable JAR

  • MainClassを設定して実行可能なJarパッケージを作成します.
      
        
          
            org.apache.maven.plugins
            maven-shade-plugin
            2.4.3
            
              
                package
                
                  shade
                
                
                  
                    
                      org.sonatype.haven.HavenCli
                    
                  
                
              
            
          
        
      
  • Relocating Classes

  • Javaエンジニアリングでは、サードパーティのJarパッケージの競合が頻繁に発生し、maven shade pluginを使用してjarまたはクラスのマルチバージョン競合を解決します.maven-shade-pluginパッケージ化時に、プロジェクトに依存するjarパッケージのクラスファイルの一部をプロジェクト構築で生成されたjarパッケージにパッケージ化し、パッケージ化時にクラスの名前を変更できます.次の構成では、org.codehaus.plexus.util jarパッケージの名前をorg.shaded.plexus.utilに変更します.
      
        
          
            org.apache.maven.plugins
            maven-shade-plugin
            2.4.3
            
              
                package
                
                  shade
                
                
                  
                    
                      org.codehaus.plexus.util
                      org.shaded.plexus.util
                      
                        org.codehaus.plexus.util.xml.Xpp3Dom
                        org.codehaus.plexus.util.xml.pull.*
                      
                    
                  
                
              
            
          
        
      

    リファレンス
    maven入門ガイドmavenライフサイクルMavenデフォルトプラグインおよび機能maven依存管理maven-shade-plugin入門ガイドmaven-assembly-plugin入門ガイド
    作者:ご饭をもらうのは难しいですね
    リンク:http://www.jianshu.com/p/7a0e20b30401
    出典:簡書
    著作権は作者の所有である.商業転載は著者に連絡して許可を得てください.非商業転載は出典を明記してください.