Spring Boot は、Maven および Gradle のビルドツールプラグインを提供します。プラグインは、実行可能 jar のパッケージ化など、さまざまな機能を提供します。このセクションでは、両方のプラグインの詳細と、サポートされていないビルドシステムを継承する必要がある場合のヘルプを提供します。始めたばかりの場合は、最初に "using-spring-boot.html" セクションの "using-spring-boot.html" を参照してください。
2. Spring Boot Gradle プラグイン
Spring Boot Gradle プラグインは、Gradle で Spring Boot サポートを提供し、実行可能な jar または war アーカイブをパッケージ化し、Spring Boot アプリケーションを実行し、spring-boot-dependencies
によって提供される依存関係管理を使用できるようにします。Gradle 6(6.3 以降)が必要です。Gradle 5.6.x もサポートされていますが、このサポートは推奨されておらず、将来のリリースで削除される予定です。詳細については、プラグインのドキュメントを参照してください:
3. Spring Boot AntLib モジュール
Spring Boot AntLib モジュールは、Apache Ant の基本的な Spring Boot サポートを提供します。このモジュールを使用して、実行可能な jar を作成できます。このモジュールを使用するには、次の例に示すように、build.xml
で追加の spring-boot
名前空間を宣言する必要があります。
<project xmlns:ivy="antlib:org.apache.ivy.ant"
xmlns:spring-boot="antlib:org.springframework.boot.ant"
name="myapp" default="build">
...
</project>
次の例に示すように、-lib
オプションを使用して Ant を開始することを忘れないでください。
$ ant -lib <directory containing spring-boot-antlib-2.3.0.RELEASE.jar>
「Spring Boot の使用」セクションには、spring-boot-antlib で Apache Ant を使用するより完全な例が含まれています。 |
3.1. Spring Boot Ant タスク
spring-boot-antlib
名前空間が宣言されると、次の追加タスクが利用可能になります。
3.1.1. "exejar" タスクの使用
exejar
タスクを使用して、Spring Boot 実行可能ファイル jar を作成できます。タスクでは次の属性がサポートされています。
属性 | 説明 | 必須 |
---|---|---|
| 作成する宛先 jar ファイル | はい |
| Java クラスファイルのルートディレクトリ | はい |
| 実行するメインアプリケーションクラス | いいえ(デフォルトは、 |
タスクでは、次のネストされた要素を使用できます。
要素 | 説明 |
---|---|
| 作成された jar ファイルのコンテンツに追加されるリソース [Apache] (英語) のセットを記述する 1 つ以上のリソースコレクション [Apache] (英語) 。 |
| アプリケーションのランタイム依存性クラスパスを構成する jar ライブラリのセットに追加する必要がある 1 つ以上のリソースコレクション [Apache] (英語) 。 |
3.1.2. サンプル
このセクションでは、Ant タスクの 2 つの例を示します。
<spring-boot:exejar destfile="target/my-application.jar"
classes="target/classes" start-class="com.example.MyApplication">
<resources>
<fileset dir="src/main/resources" />
</resources>
<lib>
<fileset dir="lib" />
</lib>
</spring-boot:exejar>
<exejar destfile="target/my-application.jar" classes="target/classes">
<lib>
<fileset dir="lib" />
</lib>
</exejar>
4. 他のビルドシステムのサポート
Maven、Gradle、Ant 以外のビルドツールを使用する場合は、おそらく独自のプラグインを開発する必要があります。実行可能 jar は特定の形式に従う必要があり、特定のエントリは非圧縮形式で記述する必要があります(詳細については、付録の「実行可能 jar 形式」セクションを参照してください)。
Spring Boot Maven および Gradle プラグインは、両方とも spring-boot-loader-tools
を使用して実際に jar を生成します。必要に応じて、このライブラリを直接使用できます。
4.1. アーカイブの再パッケージ化
自己完結型の実行可能アーカイブになるように既存のアーカイブを再パッケージ化するには、org.springframework.boot.loader.tools.Repackager
を使用します。Repackager
クラスは、既存の jar または war アーカイブを参照する単一のコンストラクター引数を取ります。2 つの使用可能な repackage()
メソッドのいずれかを使用して、元のファイルを置き換えるか、新しい宛先に書き込みます。リパッケージャーを実行する前に、さまざまな設定を構成することもできます。
4.2. ネストされたライブラリ
アーカイブを再パッケージするとき、org.springframework.boot.loader.tools.Libraries
インターフェースを使用して、依存関係ファイルへの参照を含めることができます。Libraries
の具体的な実装は、ビルドシステム固有であるため、ここでは提供しません。
アーカイブにすでにライブラリが含まれている場合は、Libraries.NONE
を使用できます。
4.3. メインクラスを見つける
Repackager.setMainClass()
を使用してメインクラスを指定しない場合、リパッケージャは ASM (英語) を使用してクラスファイルを読み取り、public static void main(String[] args)
メソッドで適切なクラスを見つけようとします。複数の候補が見つかった場合、例外がスローされます。
4.4. 再パッケージの実装例
次の例は、典型的な再パッケージの実装を示しています。
Repackager repackager = new Repackager(sourceJarFile);
repackager.setBackupSource(false);
repackager.repackage(new Libraries() {
@Override
public void doWithLibraries(LibraryCallback callback) throws IOException {
// Build system specific implementation, callback for each dependency
// callback.library(new Library(nestedFile, LibraryScope.COMPILE));
}
});
5. 次のステップ
ビルドツールプラグインの機能に興味がある場合は、GitHub の spring-boot-tools
[GitHub] (英語) モジュールを参照してください。実行可能な jar 形式のより技術的な詳細については、付録で説明します。
特定のビルド関連の質問がある場合は、「使い方」ガイドを参照してください。