Springのドキュメントや他のWeb上の記事を読んだ後も、Spring Boot Mavenプラグインのspring-boot:repackageと通常のmvn packageの違いはまだわかりません。
私はmvnパッケージがすべての依存関係が含まれたjarを作成すると思ったので、Springによってプラグインを使用する理由は何ですか?
Mavenパッケージのゴールとspring-boot:repackageゴールは性質が異なります。スプリングブート再パッケージの目標は、主に_Java -jar *.jar
_を使用してコマンドライン自体からJARまたはWARを実行可能にすることを目的としていますが、_maven package
_目標はコンパイルされたコードを取得し、配布可能な形式でパッケージ化します。 JAR。これは、mavenによって生成されたJARを再パッケージ化してメインクラスを指定し、それをexecutable埋め込みコンテナを使用します。
Mavenパッケージ
最初に、最も一般的な方法は、同じ名前のPOM要素を使用してプロジェクトのパッケージを設定することです。有効なパッケージ値には、jar、war、ear、およびpomがあります。パッケージ値が指定されていない場合、デフォルトでjarになります。
パッケージが定義されると、各パッケージには特定のフェーズにバインドする目標のリストが含まれます。jarパッケージは、デフォルトのライフサイクルのフェーズを構築するために次の目標をバインドします:プロセスリソース、コンパイル、プロセステストリソース、テスト-コンパイル、テスト、パッケージ、インストール、デプロイ。
Spring-boot:repackage
含まれるプラグインは次のとおりです。
_<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.1.4.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
_
構成は、Mavenライフサイクルのパッケージフェーズ中に構築されたjarまたはwarを再パッケージ化します。
したがって、pom.xmlにspring-boot-maven-pluginが含まれていると、アーカイブを書き換えて、spring-ブート:再パッケージゴール。通常のパッケージ要素を使用して、jarまたはwar(適切な場合)をビルドするようにプロジェクトを構成する必要があります。
リファレンス: https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html
Springは、Mavenライフサイクルのパッケージ段階で構築されたjarまたはwarを再パッケージ化します。次の例は、ターゲットディレクトリに再パッケージ化されたjarと元のjarの両方を示しています。
$ mvn package
$ ls target/*.jar
target/myproject-1.0.0.jar target/myproject-1.0.0.jar.original
構成を含めない場合は、プラグインを単独で実行できます(ただし、パッケージ目標が使用されている場合のみ)。例えば:
$ mvn package spring-boot:repackage
$ ls target/*.jar
target/myproject-1.0.0.jar target/myproject-1.0.0.jar.original
link を使用して、春のWebサイトから詳細を参照してください
mvnパッケージはjarまたはwarを作成します。
スプリングブートプラグインは、そのjarまたはwarを取得して再パッケージ化し、コマンドラインから実行可能にします(つまり、アプリサーバーは必要ありません)。
プラグインのドキュメントから:
「Java -jarを使用してコマンドラインから実行できるように、既存のJARおよびWARアーカイブを再パッケージ化します。」