「maven-shade-plugin」を使用して、JavaまたはSpringプロジェクトに必要なすべての依存関係を含む実行可能jarを1つだけ作成しますか?

公開: 2016-11-16

maven-shade-plugin-how-to-create-javaspring-based-executable-jar-with-all-required-dependencies

すべての依存関係を含む1つのCrunchify.jarファイルを作成するだけです

先週、 maven-resources-pluginmaven-dependency-pluginmaven-jar-pluginを使用して完全な実行可能なJarプロジェクトを生成する方法についてのチュートリアルを書きましたか? その結果、必要なすべてのファイルを作成/コピーして/target/Crunchifyフォルダーに保存します。

Before: maven-resource、maven-dependency、maven-jarプラグインの使用:

maven-resources-maven-dependency-maven-jar-plugin-to-build-java-project

After: maven-shadeプラグインの使用:

create-just-1-executable-jar-with-all-required-dependencies-properties-and-resources-file-in-it-for-your-java-or-spring-project

上記の結果を達成する方法を始めましょう:

ご覧のとおり、Java Projectのすべてをjust one fileにバンドルし、 Crunchify.jarという名前を付けました(すべてのファイルが含まれています)。

数日前、Mavenを使用しrunnable binary distribution of a standalone Java applicationを作成したかったので、それを実現する方法がわかりませんでした。 言い換えると:

  1. MavenでSpringベースの実行可能jarを作成するにはどうすればよいですか?
  2. Maven for Java + Spring +その他の依存関係を使用した実行可能なバイナリディストリビューションの作成
  3. MavenでJava + Springプロジェクトをビルドする方法は?

通常、Mavenでは、依存関係の管理に依存しています。 アーティファクトには、それ自体のクラス/リソースが含まれているだけです。 Mavenは、コンパイル時や実行時などに、プロジェクトが依存しているすべてのアーティファクト(JARなど)を見つける責任があります。

maven -shade- pluginの助けを借りて、私はこの目標を達成することができました。 アーティファクトをuber-jar (One major file jar)にパッケージ化し、その依存関係を含め、一部の依存関係のパッケージをシェーディング(つまり名前変更)する機能を提供します。

私のプロジェクトには、Spring Framework、JSON、サードパーティツールなど、他にも多くの依存関係があります。以下はサンプルプロジェクトですが、本番環境の.jarファイルのサイズは~5.2MB bigになりました。

uber-jarは、すべての依存関係を取得し、依存関係のコンテンツを抽出して、プロジェクト自体のクラス/リソースとともに1つのJARに配置するものです。 このようなuber-jarを使用すると、アプリを実行するために必要な小さなJARが大量にあるのではなく、大きなJARが1つだけ必要になるためeasy for executionなります。 また、場合によっては配布が容易になります。

これを実現するには、pom.xmlファイルを更新する必要があります。

ステップ1

完全なpom.xmlファイルを見てください。 主に<build>タグに興味があります。

ご覧のとおり、pom.xmlファイルでResource Transformersを使用しています。 複数のアーティファクトからのclasses/resourcesを1つのCrunchify JARに集約することは、重複がない限り簡単です。 それ以外の場合は、複数のJARからのリソースをマージするための何らかのロジックが必要です。 これは、リソーストランスフォーマーが始まるところです。

ステップ2

maven-shade-pluginpom.xmlファイルに追加したら、以下のコマンドを使用してプロジェクトをビルドします。

そしてall dependencies mentioned in pom.xml file作成された1つのCrunchify.jar (uber-jar)ファイルが表示されます。

ステップ-3

プロジェクトのターゲットフォルダーに移動すると、Crunchify.jarファイルが作成されます。 コマンドを使用するだけ

$bash> java -jar Crunchify.jarを使用して、プロジェクトを実行します。

追加するものはありますか? 以下のコメントセクションに追加してください。 楽しんで、素晴らしい一日を過ごして、ハッピーコーディングを。