依存関係としてのSpring Bootアプリケーションの使用

1. 概要

このチュートリアルでは、Spring Bootアプリケーションを別のプロジェクトの依存関係として使用する方法を説明します。

2. スプリングブートパッケージ

Spring Boot MavenおよびGradleプラグインはどちらも、アプリケーションを実行可能JARとしてパッケージ化します。クラスファイルは_BOOT-INF / classes_ *に配置されるため、このようなファイルは別のプロジェクトで使用できません。 これはバグではなく、機能です。
クラスを別のプロジェクトと共有するための最善のアプローチは、*共有クラスを含む個別のjar *を作成*し、それらに依存するすべてのモジュールの依存関係にすることです。
ただし、それが不可能な場合は、プラグインを構成して、依存関係として使用できる別のjarを生成できます。

2.1. Mavenの構成

プラグインを分類子で構成しましょう:
...
<build>
    ...
    <plugins>
        ...
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <classifier>exec</classifier>
            </configuration>
        </plugin>
    </plugins>
</build>
ただし、Spring Boot 1.xの構成は少し異なります。
...
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
            <configuration>
                <classifier>exec</classifier>
            </configuration>
        </execution>
    </executions>
</plugin>

これにより、2つのjarが作成されます。1つは実行可能jarとして_exec_の接尾辞を付け、*もう1つは他のプロジェクトに含めることができるより一般的なjarとして作成されます。

3. Mavenアセンブリプラグインを使用したパッケージ化

_https://search.maven.org/search?q = a:maven-assembly-plugin [maven-assembly-plugin] _を使用して、依存するjarを作成することもできます。
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>
_spring-boot-maven-pluginの_exec_分類子とともにこのプラグインを使用すると、3つのjarが生成されます。 最初の2つは、以前見たものと同じです。
3番目には___ descriptorRef> __tagで指定したサフィックスがあり、プロジェクトのすべての推移的な依存関係が含まれます。 別のプロジェクトに含める場合、Springの依存関係を個別に含める必要はありません。

4. 結論

この記事では、他のMavenプロジェクトの依存関係として使用するために、Spring Bootアプリケーションをパッケージ化するためのいくつかのアプローチを示しました。
いつものように、記事を裏付けるコードはhttps://github.com/eugenp/tutorials/tree/master/spring-boot-crud[GitHubで]から入手できます。