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>

ただし、SpringBoot1.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が付いたもの、とは他のプロジェクトに含めることができるより一般的なjarです

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

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番目のサフィックスには、 タグを付けて、プロジェクトのすべての推移的な依存関係を含めます。 別のプロジェクトに含める場合は、Springの依存関係を個別に含める必要はありません。

4. 結論

この記事では、他のMavenプロジェクトで依存関係として使用するためにSpringBootアプリケーションをパッケージ化するためのいくつかのアプローチを示しました。

いつものように、記事を裏付けるコードはGitHub利用できます。