私は、実稼働環境でうまく動作するスプリングブートアプリケーションを持っていますが、最近はファットジャーの展開戦略について疑問があります。ファットジャーのサイズは約80 MBです。単一のジャー、私は1つの行を変更するたびに、この80 MBのパッケージが再展開されます。どのようにしてこの大粒の瓶をメインの瓶と他の瓶(私が開発したものではない)に/ libディレクトリで分けることができます。どのような選択肢がありますか?スプリングブートファットジャーのデプロイ
0
A
答えて
1
あなたはいくつかのオプションがありますが、最も簡単な方法(and suggested by official docs)はfat jarファイルを抽出することです。
$ unzip -q myapp.jar
$ java org.springframework.boot.loader.JarLauncher
これで問題のカップルがありますが、すべてのアプリケーションコードの最初は、今(ではない、それ自身のジャーに)クラスファイルの束になります。
2番目の問題は、まだ多くのユーティリティーを提供していないスプリングブートローダーを使用しており、ファイルシステムを汚染していることです。
もう1つのオプションは、ビルドを変更して必要なものを提供することです。
gradleを使用すると、application pluginをmavenと併用することができます。appassembler pluginをお勧めします。
Appassemblerは、target/appassembler/
というディレクトリを作成します。このディレクトリには、起動スクリプトを含むbinディレクトリと、すべての依存関係を持つrepoディレクトリが含まれています。
これを使用するには、spring-boot:repackageタスクを無効にし、appassemblerプラグインにメインクラスが何であるかを伝える必要があります。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<skip>true</skip>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.10</version>
<configuration>
<programs>
<program>
<mainClass>com.example.MyMainClass</mainClass>
<id>myappname</id>
</program>
</programs>
</configuration>
</plugin>
</plugins>
</build>
+0
2番目のオプション、ありがとうございます。 – cacert
関連する問題
- 1. アプリケーションエンジンチャネルのデプロイ
- 2. ウェブアプリケーションのデプロイ
- 3. Springクラウドデータフローのデプロイ
- 4. .NETアプリケーションのデプロイ
- 5. Railsアプリケーションのデプロイ
- 6. Webアプリケーションのデプロイ
- 7. Apache Solrのデプロイ
- 8. Silverlightビジネスアプリケーションのデプロイ
- 9. スプリングブートアプリケーションのデプロイ
- 10. modulus.ioのMeteorデプロイ
- 11. Pythonライブラリのデプロイ
- 12. WASシンクライアントのデプロイ
- 13. Django Appのデプロイ
- 14. Datasnapサービスのデプロイ
- 15. TomcatのTeamCityデプロイ
- 16. MEFパーツのデプロイ
- 17. Herokuのデプロイは
- 18. モバイルウェブアプリのデプロイ
- 19. Mavenビルドのデプロイ
- 20. CakePHPのデプロイ
- 21. ポストビルドスクリプト後のデプロイ
- 22. pythonアプリケーションのデプロイ
- 23. Senchaアプリケーションのデプロイ
- 24. Apache Tomcatのデプロイ
- 25. デスクトップアプリケーションのデプロイ
- 26. カスタムコントロールフローコンポーネントの再デプロイSSIS
- 27. JavascriptMVCのデプロイ方法
- 28. CIビルド後のデプロイ
- 29. CDHのインストールとデプロイ
- 30. Java Mavenアプリケーションのデプロイ
Maven、Gradleはどのビルドツールを使用していますか? – Magnus
私はmavenを使用しています。 – cacert
これは問題なのですか?パッケージを削除すると、基本的にすべての依存関係も削除されます。今、何かをアップグレードするときに、その '/ lib'フォルダにコピーされていることを確認する必要があります。最終的には、その/ libフォルダの古い/欠落している依存関係のために何かが壊れてしまいます。誰かが何かを削除したり、便利に見えるものをコピーしたりします。リポジトリの適切なハウスキーピングを設定するだけです(例えば、最後のxバージョンのみを保存する)。 –