SpringBoot jarパッケージが大きすぎるという問題を解決する


原文住所:http://rickgong.iteye.com/blog/2368985
コンフィギュレーションファイルも外に置くと別の記事を参照できますhttps://blog.csdn.net/m0_37598340/article/details/86478126
Spring boot spring-boot-maven-pluginプラグインを追加すると、Jarが何十兆も打たれます.このFatJarパッケージは転送時にかなり不便で、特に一部の外資系企業では、サーバーが米国にある可能性があり、アップロード速度が200 K未満で、仕事の効率に深刻な影響を及ぼす可能性がある.
FatJarのサイズを減らす方法についてお話しします.
SpringBootのwebアプリケーションは一般的にspring-boot-maven-pluginプラグインを追加している.
Maven xmlコード
  
      
          
            org.springframework.boot  
            spring-boot-maven-plugin  
          
      
  

出たjarパッケージにはすべての依存jarが内蔵されており、BOOT-INF/libディレクトリに置かれているため、体積が大きい.
解決手順:
  • spring-boot-maven-pluginのパラメータを変更し、内蔵jarパッケージexcludeを削除します.たとえば、
  • Xmlコード
      
       org.springframework.boot  
       spring-boot-maven-plugin  
       1.5.1.RELEASE  
         
          ZIP  
             
                 
                   ch.qos.logback  
                   logback-classic  
                 
                 
                   com.google.guava  
                   guava  
                 
             
         
      
    

    これにより、打たれたjarにはexcludeによる依存は含まれない.注意layoutはZIPに設定しなければならない.そうしないと、後でクラスが見つからないエラーが発生する.
    excludeは1つの書き方だけでなく、他のexclude方式はhttp://docs.spring.io/spring-boot/docs/current/maven-plugin/start-mojo.html.
    mvn dependency:treeコマンドで現在のプロジェクトの依存性を表示できます.
    依存するjarが排除されたためFatJarが痩せ、そのまま運転するとClassNotFoundExceptionに報告されます.だから次のステップに進みます.
    会社のparent pomでxmlのpluginManagementセクションにspring-boot-maven-pluginの構成を追加することで、各webプロジェクトは全社統一の構成を継承することができる.
  • 前のexcludeから削除するjarを外付けディレクトリに配置する.次に、在这里插入图片描述は、Cmdコード
  • のコマンドを実行してアプリケーションを開始する.
    java -Dloader.path="lib/" -jar common-service.jar  
     
        
    nohup java -jar    springboot  .jar >     .log 2>&1 &
    
    
        :
    
    nohup:        ,               。
    
    >     .log: nohup command               “     .log”   ,            ,     ”     .log”   。              nohup.out,        nohup.out      ,       $HOME/nohup.out    。                 ,   Command            。
    
    
    2>&1:2      ,1     ,                    。  &              ,                   “     .log”   。
    
    
    java -jar    springboot  .jar:  springboot   ,          ,linux          ,               。
    
    
       &:         。
    

    loader.pathは外付けディレクトリを指し、springbootに外部からのロード依存を許可するように伝えた.
    loader.pathの詳細については、以下を参照してください.http://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html#executable-jar-launching.
    mvn dependency:copy-dependenciesコマンドでjarパッケージをこの外付けディレクトリにcopyすることができます.
    以上の2つのステップを経て、筆者の応用は70 MBから1.3 MBに縮小し、体積を極めて縮小した.
    体積を縮小し、伝送を容易にするとともに、jarに依存するバージョンを容易に制御し、全社が統一し、同じ依存集合を共有することができる.
    特に、アプリケーションをdockerに配備する場合は、dockerfileを変更し、依存ディレクトリをdockerミラーにマウントし、アプリケーションの起動コマンド(dockerfileのentrypointである可能性がある)を変更し、loaderを追加する必要がある.pathパラメータは、マウントされた依存ディレクトリを指す.ADDをdockerミラーに依存することは推奨されない、そうすればdockerミラーは大きくなる.