web-dev-qa-db-ja.com

spring-boot:repackageとmvnパッケージの違い

Springのドキュメントや他のWeb上の記事を読んだ後も、Spring Boot Mavenプラグインのspring-boot:repackageと通常のmvn packageの違いはまだわかりません。

私はmvnパッケージがすべての依存関係が含まれたjarを作成すると思ったので、Springによってプラグインを使用する理由は何ですか?

20
Samuel

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

7

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サイトから詳細を参照してください

5
fabfas

mvnパッケージはjarまたはwarを作成します。

スプリングブートプラグインは、そのjarまたはwarを取得して再パッケージ化し、コマンドラインから実行可能にします(つまり、アプリサーバーは必要ありません)。

プラグインのドキュメントから:

「Java -jarを使用してコマンドラインから実行できるように、既存のJARおよびWARアーカイブを再パッケージ化します。」

1
PaulNUK