SpringBoot jarパッケージが大きすぎるという問題を解決する
3478 ワード
原文住所: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コード
出たjarパッケージにはすべての依存jarが内蔵されており、BOOT-INF/libディレクトリに置かれているため、体積が大きい.
解決手順: spring-boot-maven-pluginのパラメータを変更し、内蔵jarパッケージexcludeを削除します.たとえば、 Xmlコード
これにより、打たれた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コード のコマンドを実行してアプリケーションを開始する.
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ミラーは大きくなる.
コンフィギュレーションファイルも外に置くと別の記事を参照できます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ディレクトリに置かれているため、体積が大きい.
解決手順:
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プロジェクトは全社統一の構成を継承することができる.
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ミラーは大きくなる.