1. 導入

Spring Boot Maven プラグインは、Apache Maven (英語) で Spring Boot サポートを提供します。統合テストを実行する前に、実行可能な jar または war アーカイブをパッケージ化し、Spring Boot アプリケーションを実行し、ビルド情報を生成して、Spring Boot アプリケーションを起動できます。

2. 入門

Spring Boot Maven プラグインを使用するには、次の例に示すように、pom.xml の plugins セクションに適切な XML を含めます。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<!-- ... -->
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
			</plugin>
		</plugins>
	</build>
</project>

マイルストーンまたはスナップショットリリースを使用する場合は、次のように、適切な pluginRepository 要素も追加する必要があります。

<pluginRepositories>
	<pluginRepository>
		<id>spring-snapshots</id>
		<url>https://repo.spring.io/snapshot</url>
	</pluginRepository>
	<pluginRepository>
		<id>spring-milestones</id>
		<url>https://repo.spring.io/milestone</url>
	</pluginRepository>
</pluginRepositories>

3. プラグインの使用

Maven ユーザーは、spring-boot-starter-parent プロジェクトから継承して、適切なデフォルトを取得できます。親プロジェクトは次の機能を提供します。

  • デフォルトのコンパイラーレベルとしての Java 1.8。

  • UTF-8 ソースエンコーディング。

  • 共通の依存関係のバージョンを管理する、spring-boot-dependencies POM から継承された依存関係管理セクション。この依存関係管理により、独自の POM で使用するときに、これらの依存関係の <version> タグを省略できます。

  • repackage 実行 ID を使用した repackage ゴールの実行。

  • 実用的なリソースフィルタリング [Apache] (英語)

  • 実用的なプラグイン構成(git commit id [GitHub] (英語) 、および shade [Apache] (英語) )。

  • プロファイル固有のファイルを含む application.properties および application.yml の実用的なリソースフィルタリング (たとえば、application-dev.properties および application-dev.yml)

application.properties および application.yml ファイルは Spring スタイルのプレースホルダー(${…​})を受け入れるため、Maven フィルタリングは @..@ プレースホルダーを使用するように変更されることに注意してください。(resource.delimiter と呼ばれる Maven プロパティを設定することにより、それをオーバーライドできます。)

3.1. 親スターター POM の継承

spring-boot-starter-parent から継承するようにプロジェクトを構成するには、parent を次のように設定します。

<!-- Inherit defaults from Spring Boot -->
<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.3.0.RELEASE</version>
</parent>
この依存関係では、Spring Boot バージョン番号のみを指定する必要があります。追加のスターターをインポートする場合、バージョン番号を安全に省略できます。

この設定では、独自のプロジェクトのプロパティをオーバーライドすることで、個々の依存関係をオーバーライドすることもできます。たとえば、異なるバージョンの SLF4J ライブラリと Spring Data リリーストレインを使用するには、次のコードを pom.xml に追加します。

<properties>
	<slf4j.version>1.7.30</slf4j.version>
	<spring-data-releasetrain.version>Moore-SR6</spring-data-releasetrain.version>
</properties>

依存関係バージョンのプロパティの完全なリストについては、Spring Boot リファレンスで Dependency versions Appendix (英語) を参照してください。

3.2. 親 POM なしで Spring Boot を使用する

spring-boot-starter-parent POM から継承しない理由があるかもしれません。使用する必要がある独自の企業標準の親がいる場合や、すべての Maven 構成を明示的に宣言したい場合があります。

spring-boot-starter-parent を使用したくない場合でも、次のように import スコープの依存関係を使用することで、依存関係管理(プラグイン管理ではなく)の利点を維持できます。

<dependencyManagement>
	<dependencies>
		<dependency>
			<!-- Import dependency management from Spring Boot -->
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-dependencies</artifactId>
			<version>2.3.0.RELEASE</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

上記のサンプルセットアップでは、上記で説明したように、プロパティを使用して個々の依存関係を上書きすることはできません。同じ結果を得るには、プロジェクトの dependencyManagement セクションのエントリを spring-boot-dependencies エントリのに追加する必要があります。たとえば、異なるバージョンの SLF4J ライブラリと Spring Data リリーストレインを使用するには、次の要素を pom.xml に追加します。

<dependencyManagement>
	<dependencies>
		<!-- Override SLF4J provided by Spring Boot -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.30</version>
		</dependency>
		<!-- Override Spring Data release train provided by Spring Boot -->
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-releasetrain</artifactId>
			<version>Moore-SR6</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-dependencies</artifactId>
			<version>2.3.0.RELEASE</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

4. ゴール

Spring Boot プラグインには次のゴールがあります。

ゴール 説明

spring-boot:build-image

buildpack を使用して、アプリケーションを OCI イメージにパッケージ化します。

spring-boot:build-info

現在の MavenProject のコンテンツに基づいて build-info.properties ファイルを生成します。

spring-boot:help

spring-boot-maven-plugin に関するヘルプ情報を表示します。mvn spring-boot:help -Ddetail=true -Dgoal=<goal-name> を呼び出して、パラメーターの詳細を表示します。

spring-boot:repackage

java -jar を使用してコマンドラインから実行できるように、既存の JAR および WAR アーカイブを再パッケージ化します。layout=NONE を使用すると、ネストされた依存関係を持つ JAR を単純にパッケージ化することもできます(メインクラスがないため、実行可能ファイルではありません)。

spring-boot:run

アプリケーションを所定の場所で実行します。

spring-boot:start

Spring のアプリケーションを開始します。run のゴールに反して、これはブロックせず、他のゴールがアプリケーションで動作することを許可します。このゴールは、通常、テストスイートの前にアプリケーションが開始され、その後に停止される統合テストシナリオで使用されます。

spring-boot:stop

「開始」ゴールによって開始されたアプリケーションを停止します。通常、テストスイートが完了すると呼び出されます。

5. 実行可能アーカイブのパッケージ化

プラグインは、アプリケーションのすべての依存関係を含む実行可能アーカイブ(jar ファイルおよび war ファイル)を作成し、java -jar で実行できます。

実行可能アーカイブのパッケージ化は、次の例に示すように、repackage ゴールによって実行されます。

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<version>2.3.0.RELEASE</version>
			<executions>
				<execution>
					<goals>
						<goal>repackage</goal>
					</goals>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>
spring-boot-starter-parent を使用している場合、そのような実行は repackage 実行 ID ですでに事前設定されているため、プラグイン定義のみを追加する必要があります。

上記の例では、Maven ライフサイクルのパッケージフェーズ中にビルドされた jar または war アーカイブを再パッケージします。これには、プロジェクトで定義されている provided 依存関係も含まれます。これらの依存関係の一部を除外する必要がある場合は、exclude オプションのいずれかを使用できます。詳細については、依存関係の除外を参照してください。

元の(実行不可能な)アーティファクトはデフォルトで .original に名前が変更されますが、カスタム分類子を使用して元のアーティファクトを保持することもできます。

maven-war-plugin の outputFileNameMapping 機能は現在サポートされていません。

Devtools はデフォルトで自動的に除外されます(excludeDevtools プロパティを使用して制御できます)。これを war パッケージで機能させるには、spring-boot-devtools 依存関係を optional または provided スコープに設定する必要があります。

プラグインはマニフェストを書き換え、特に Main-Class および Start-Class エントリを管理します。デフォルトが機能しない場合は、jar プラグインではなく、Spring Boot プラグインで値を設定する必要があります。マニフェストの Main-Class は、次の例に示すように、Spring Boot プラグインの layout プロパティによって制御されます。

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<version>2.3.0.RELEASE</version>
			<configuration>
				<mainClass>${start.class}</mainClass>
				<layout>ZIP</layout>
			</configuration>
			<executions>
				<execution>
					<goals>
						<goal>repackage</goal>
					</goals>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>

layout プロパティのデフォルトは、アーカイブ型(jar または war)によって決定される値です。次のレイアウトを使用できます。

  • JAR: 通常の実行可能 JAR レイアウト。

  • WAR: 実行可能な WAR レイアウト。provided 依存関係は、war がサーブレットコンテナーにデプロイされたときの衝突を避けるために WEB-INF/lib-provided に配置されます。

  • ZIP (別名 DIR): PropertiesLauncher を使用した JAR レイアウトに似ています。

  • NONE: すべての依存関係とプロジェクトリソースをバンドルします。ブートストラップローダーをバンドルしません。

5.1. 階層化された jar

再パッケージ化された jar には、アプリケーションのクラスと BOOT-INF/classes および BOOT-INF/lib の依存関係がそれぞれ含まれています。jar のコンテンツから docker イメージを構築する必要がある場合は、これらのディレクトリをさらに分離して、別々のレイヤーに書き込むことができると便利です。

階層化された jar は、通常の再パッケージ化された jar と同じレイアウトを使用しますが、各レイヤーを説明する追加のメタデータファイルを含みます。この機能を使用するには、レイヤー機能を有効にする必要があります。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<configuration>
					<layers>
						<enabled>true</enabled>
					</layers>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

デフォルトでは、次のレイヤーが定義されています。

  • dependencies (バージョンに SNAPSHOT を含まない依存関係の場合)。

  • jar ローダークラスの spring-boot-loader

  • バージョンに SNAPSHOT が含まれる依存関係の snapshot-dependencies

  • アプリケーションクラスとリソースの application

レイヤーの順序は、アプリケーションの一部が変更されたときに前のレイヤーがキャッシュされる可能性を決定するため、重要です。デフォルトの順序は dependenciesspring-boot-loadersnapshot-dependenciesapplication です。変更の可能性が最も低いコンテンツを最初に追加し、次に変更の可能性が高いレイヤーを追加する必要があります。

5.1.1. カスタムレイヤー構成

アプリケーションによっては、レイヤーの作成方法を調整し、新しいレイヤーを追加したい場合があります。これは、以下に示すように登録する必要がある別の構成ファイルを使用して実行できます。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<configuration>
					<layers>
						<enabled>true</enabled>
						<configuration>${project.basedir}/src/layers.xml</configuration>
					</layers>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

構成ファイルには、jar をレイヤーに分離する方法とそれらのレイヤーの順序が記述されています。次の例は、上記のデフォルトの順序を明示的に定義する方法を示しています。

<layers xmlns="http://www.springframework.org/schema/boot/layers"
					  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
					  xsi:schemaLocation="http://www.springframework.org/schema/boot/layers
                      https://www.springframework.org/schema/boot/layers/layers-2.3.xsd">
	<application>
		<into layer="spring-boot-loader">
			<include>org/springframework/boot/loader/**</include>
		</into>
		<into layer="application" />
	</application>
	<dependencies>
		<into layer="snapshot-dependencies">
			<include>*:*:*SNAPSHOT</include>
		</into>
		<into layer="dependencies" />
	</dependencies>
	<layerOrder>
		<layer>dependencies</layer>
		<layer>spring-boot-loader</layer>
		<layer>snapshot-dependencies</layer>
		<layer>application</layer>
    </layerOrder>
</layers>

layers XML 形式は、3 つのセクションで定義されています。

  • <application> ブロックは、アプリケーションクラスとリソースを階層化する方法を定義します。

  • <dependencies> ブロックは、依存関係の階層化方法を定義します。

  • <layerOrder> ブロックは、レイヤーが書き込まれる順序を定義します。

ネストされた <into> ブロックは、<application> および <dependencies> セクション内で使用され、レイヤーのコンテンツを要求します。ブロックは、定義された順序で上から下に評価されます。前のブロックで要求されていないコンテンツは、引き続き後続のブロックで検討できます。

<into> ブロックは、ネストされた <include> および <exclude> 要素を使用してコンテンツを要求します。<application> セクションでは、包含 / 除外式に Ant スタイルのパッチマッチングを使用します。<dependencies> セクションは group:artifact[:version] パターンを使用します。

<include> が定義されていない場合、すべてのコンテンツ(前のブロックで要求されていない)が考慮されます。

<exclude> が定義されていない場合、除外は適用されません。

上記の <dependencies> の例を見ると、最初の <into> が snapshot-dependencies レイヤーのすべてのスナップショット依存関係を要求していることがわかります。後続の <into> は、dependencies レイヤーに残っているもの(この場合は、スナップショットではない依存関係)を要求します。

<application> ブロックにも同様のルールがあります。最初に spring-boot-loader レイヤーの org/springframework/boot/loader/** コンテンツを要求します。次に、application レイヤーの残りのクラスとリソースを要求します。

<into> ブロックが定義される順序は、多くの場合、レイヤーが書き込まれる順序とは異なります。このため、<layerOrder> 要素は常に含まれている必要があり<into> ブロックによって参照されるすべてのレイヤーをカバーする必要があります。

5.2. spring-boot:repackage

org.springframework.boot:spring-boot-maven-plugin:2.3.0.RELEASE

java -jar を使用してコマンドラインから実行できるように、既存の JAR および WAR アーカイブを再パッケージ化します。layout=NONE を使用すると、ネストされた依存関係を持つ JAR を単純にパッケージ化することもできます(メインクラスがないため、実行可能ファイルではありません)。

5.2.1. 必須パラメーター

名前 タイプ デフォルト

outputDirectory

File

${project.build.directory}

5.2.2. オプションのパラメーター

名前 タイプ デフォルト

attach

boolean

true

classifier

String

embeddedLaunchScript

File

embeddedLaunchScriptProperties

Properties

excludeDevtools

boolean

true

excludeGroupIds

String

excludes

List

executable

boolean

false

includeSystemScope

boolean

false

includes

List

layers

Layers

layout

AbstractPackagerMojo$LayoutType

layoutFactory

LayoutFactory

mainClass

String

outputTimestamp

String

${project.build.outputTimestamp}

requiresUnpack

List

skip

boolean

false

5.2.3. パラメーターの詳細

attach

再パッケージ化されたアーカイブを添付して、ローカル Maven リポジトリにインストールするか、リモートリポジトリにデプロイします。分類子が構成されていない場合、通常の jar を置き換えます。classifier が通常の jar と再パッケージ化された jar が異なるように構成されている場合、通常の jar と一緒に接続されます。プロパティが false に設定されている場合、再パッケージ化されたアーカイブはインストールまたはデプロイされません。

名前

attach

タイプ

boolean

デフォルト値

true

ユーザープロパティ

開始

1.4.0

classifier

再パッケージ化されたアーカイブに追加する分類子。指定しない場合、メインのアーティファクトは再パッケージ化されたアーカイブに置き換えられます。指定された場合、分類子は、再パッケージ化するソースアーカイブの決定にも使用されます。その分類子を持つアーティファクトがすでに存在する場合、ソースとして使用され、置き換えられます。そのようなアーティファクトが存在しない場合、メインアーティファクトがソースとして使用され、再パッケージ化されたアーカイブがその分類子の補足アーティファクトとして添付されます。アーティファクトを添付すると、元のアーティファクトと一緒にデプロイできます。$1 [$2] を参照してください。

名前

classifier

タイプ

java.lang.String

デフォルト値

ユーザープロパティ

開始

1.0.0

embeddedLaunchScript

jar が完全に実行可能な場合、jar の前に追加する埋め込み起動スクリプト。指定しない場合は、"Spring Boot" デフォルトスクリプトが使用されます。

名前

embeddedLaunchScript

タイプ

java.io.File

デフォルト値

ユーザープロパティ

開始

1.3.0

embeddedLaunchScriptProperties

埋め込み起動スクリプトで展開する必要があるプロパティ。

名前

embeddedLaunchScriptProperties

タイプ

java.util.Properties

デフォルト値

ユーザープロパティ

開始

1.3.0

excludeDevtools

再パッケージ化されたアーカイブから Spring Boot devtools を除外します。

名前

excludeDevtools

タイプ

boolean

デフォルト値

true

ユーザープロパティ

spring-boot.repackage.excludeDevtools

開始

1.3.0

excludeGroupIds

除外する groupId 名のカンマ区切りリスト (完全一致)。

名前

excludeGroupIds

タイプ

java.lang.String

デフォルト値

ユーザープロパティ

spring-boot.excludeGroupIds

開始

1.1.0

excludes

除外するアーティファクト定義のコレクション。Exclude 要素は、groupId および artifactId の必須プロパティと、オプションの classifier プロパティを定義します。

名前

excludes

タイプ

java.util.List

デフォルト値

ユーザープロパティ

spring-boot.excludes

開始

1.1.0

executable

起動スクリプトを jar の先頭に追加して、*nix マシン用の完全に実行可能な jar を作成します。<p> 現在、一部のツールはこの形式を受け入れないため、常にこの手法を使用できるとは限りません。例: jar -xf は、完全に実行可能にされた jar または war の抽出に暗黙的に失敗する場合があります。このオプションは、java -jar で実行したり、サーブレットコンテナーにデプロイしたりするのではなく、直接実行する場合にのみ有効にすることをお勧めします。

名前

executable

タイプ

boolean

デフォルト値

false

ユーザープロパティ

開始

1.3.0

includeSystemScope

システムスコープの依存関係を含めます。

名前

includeSystemScope

タイプ

boolean

デフォルト値

false

ユーザープロパティ

開始

1.4.0

includes

含めるアーティファクト定義のコレクション。Include 要素は、groupId および artifactId の必須プロパティと、オプションの classifier プロパティを定義します。

名前

includes

タイプ

java.util.List

デフォルト値

ユーザープロパティ

spring-boot.includes

開始

1.2.0

layers

レイヤーツール jar を除外するオプションを含むレイヤー構成。

名前

layers

タイプ

org.springframework.boot.maven.Layers

デフォルト値

ユーザープロパティ

開始

2.3.0

layout

アーカイブの型(依存関係がその中にどのように配置されるかに対応)。可能な値は、JAR、WAR、ZIP、DIR、NONE です。デフォルトは、アーカイブ型に基づいた推測です。

名前

layout

タイプ

org.springframework.boot.maven.AbstractPackagerMojo$LayoutType

デフォルト値

ユーザープロパティ

spring-boot.repackage.layout

開始

1.0.0

layoutFactory

明示的なレイアウトが設定されていない場合に実行可能アーカイブを作成するために使用されるレイアウトファクトリ。サードパーティが代替レイアウトの実装を提供できます。

名前

layoutFactory

タイプ

org.springframework.boot.loader.tools.LayoutFactory

デフォルト値

ユーザープロパティ

開始

1.5.0

mainClass

メインクラスの名前。指定しない場合、"main" メソッドを含む最初に見つかったコンパイル済みクラスが使用されます。

名前

mainClass

タイプ

java.lang.String

デフォルト値

ユーザープロパティ

開始

1.0.0

outputDirectory

生成されたアーカイブを含むディレクトリ。

名前

outputDirectory

タイプ

java.io.File

デフォルト値

${project.build.directory}

ユーザープロパティ

開始

1.0.0

outputTimestamp

ISO 8601(yyyy-MM-dd’T’HH:mm:ssXXX)またはエポックからの秒数を表す int としてフォーマットされた、再現可能な出力アーカイブエントリのタイムスタンプ。war パッケージではサポートされていません。

名前

outputTimestamp

タイプ

java.lang.String

デフォルト値

${project.build.outputTimestamp}

ユーザープロパティ

開始

2.3.0

requiresUnpack

実行するためにファット jar から解凍する必要があるライブラリのリスト。各ライブラリを <dependency> として指定し、<groupId> および <artifactId> を指定すると、実行時に解凍されます。

名前

requiresUnpack

タイプ

java.util.List

デフォルト値

ユーザープロパティ

開始

1.1.0

skip

実行をスキップします。

名前

skip

タイプ

boolean

デフォルト値

false

ユーザープロパティ

spring-boot.repackage.skip

開始

1.2.0

5.3. サンプル

5.3.1. カスタム分類子

デフォルトでは、repackage ゴールは元のアーティファクトを再パッケージ化されたアーティファクトに置き換えます。これは、アプリケーションを表すモジュールの正常な動作ですが、モジュールが別のモジュールの依存関係として使用される場合、再パッケージ化されたモジュールの分類子を提供する必要があります。その理由は、依存クラスが再パッケージ化された jar のクラスをロードできないように、アプリケーションクラスが BOOT-INF/classes にパッケージ化されているためです。

その場合、または元のアーティファクトを保持し、別の分類子を使用して再パッケージ化されたアーティファクトを添付する場合は、次の例に示すようにプラグインを構成します。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<executions>
					<execution>
						<id>repackage</id>
						<goals>
							<goal>repackage</goal>
						</goals>
						<configuration>
							<classifier>exec</classifier>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>

spring-boot-starter-parent を使用している場合、repackage ゴールは ID repackage の実行で自動的に実行されます。そのセットアップでは、次の例に示すように、構成のみを指定する必要があります。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<executions>
					<execution>
						<id>repackage</id>
						<configuration>
							<classifier>exec</classifier>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>

この構成では、2 つのアーティファクトが生成されます。元のアーティファクトと、再パッケージ化のゴールによって生成された再パッケージ化されたカウンターパートです。両方とも透過的にインストール / デプロイされます。

メインアーティファクトが置き換えられるのと同じメソッドでセカンダリアーティファクトを再パッケージ化する場合も、同じ構成を使用できます。次の構成は、再パッケージ化されたアプリケーションとともに単一の task 分類アーティファクトをインストール / デプロイします。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>1.2.3</version>
				<executions>
					<execution>
						<goals>
							<goal>jar</goal>
						</goals>
						<phase>package</phase>
						<configuration>
							<classifier>task</classifier>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<executions>
					<execution>
						<id>repackage</id>
						<goals>
							<goal>repackage</goal>
						</goals>
						<configuration>
							<classifier>task</classifier>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>

maven-jar-plugin と spring-boot-maven-plugin の両方が同じフェーズで実行されるため、jar プラグインを最初に定義することが重要です(再パッケージ化のゴールの前に実行されるように)。再び、spring-boot-starter-parent を使用している場合、これは次のように簡略化できます。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<executions>
					<execution>
						<id>default-jar</id>
						<configuration>
							<classifier>task</classifier>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<executions>
					<execution>
						<id>repackage</id>
						<configuration>
							<classifier>task</classifier>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>

5.3.2. カスタム名

再パッケージ化された jar に、プロジェクトの artifactId 属性で定義されたものとは異なるローカル名を付ける必要がある場合は、次の例に示すように、単に標準 finalName を使用します。

<project>
	<build>
		<finalName>my-app</finalName>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<executions>
					<execution>
						<id>repackage</id>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>

この構成により、target/my-app.jar に再パッケージ化されたアーティファクトが生成されます。

5.3.3. ローカルで再パッケージ化されたアーティファクト

デフォルトでは、repackage のゴールは、元の成果物を実行可能な成果物に置き換えます。元の jar のみをデプロイし、それでも通常のファイル名でアプリを実行できる必要がある場合は、次のようにプラグインを構成します。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<executions>
					<execution>
						<id>repackage</id>
						<goals>
							<goal>repackage</goal>
						</goals>
						<configuration>
							<attach>false</attach>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>

この構成では、2 つのアーティファクトが生成されます。元のアーティファクトと、repackage ゴールによって生成された実行可能なカウンターパートです。オリジナルのもののみがインストール / デプロイされます。

5.3.4. カスタムレイアウト

Spring Boot は、ビルドプラグインへの依存関係として提供される追加の jar ファイルで定義されたカスタムレイアウトファクトリを使用して、このプロジェクトの jar ファイルを再パッケージ化します。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<executions>
					<execution>
						<id>repackage</id>
						<goals>
							<goal>repackage</goal>
						</goals>
						<configuration>
							<layoutFactory implementation="com.example.CustomLayoutFactory">
								<customProperty>value</customProperty>
							</layoutFactory>
						</configuration>
					</execution>
				</executions>
				<dependencies>
					<dependency>
						<groupId>com.example</groupId>
						<artifactId>custom-layout</artifactId>
						<version>0.0.1.BUILD-SNAPSHOT</version>
					</dependency>
				</dependencies>
			</plugin>
		</plugins>
	</build>
</project>

レイアウトファクトリは、pom で明示的に指定された LayoutFactory (spring-boot-loader-tools から)の実装として提供されます。プラグインクラスパスにカスタム LayoutFactory が 1 つだけあり、それが META-INF/spring.factories にリストされている場合、プラグイン構成で明示的に設定する必要はありません。

明示的なレイアウトが設定されている場合、レイアウトファクトリは常に無視されます。

5.3.5. 依存関係の除外

デフォルトでは、repackage と run の両方のゴールには、プロジェクトで定義されている provided の依存関係が含まれます。Spring Boot プロジェクトは、provided 依存関係を、アプリケーションの実行に必要な「コンテナー」依存関係と見なす必要があります。

これらの依存関係の一部はまったく必要ない場合があり、実行可能な jar から除外する必要があります。一貫性を保つために、アプリケーションの実行時にも存在しないようにする必要があります。

実行時にパッケージ化 / 使用から依存関係を除外する方法は 2 つあります。

  • groupId および artifactId で識別される特定のアーティファクトを除外します。必要に応じて、オプションで classifier を使用します。

  • 特定の groupId に属するアーティファクトを除外します。

次の例では、com.foo:bar を除外し、その成果物のみを除外します。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<configuration>
					<excludes>
						<exclude>
							<groupId>com.foo</groupId>
							<artifactId>bar</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

この例では、com.foo グループに属するアーティファクトを除外します。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<configuration>
					<excludeGroupIds>com.foo</excludeGroupIds>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

5.3.6. 階層化された Jar ツール

階層化された jar を作成すると、spring-boot-jarmode-layertools jar が依存関係として jar に追加されます。この jar をクラスパスで使用すると、ブートストラップコードでアプリケーションとはまったく異なるもの(レイヤーを抽出するものなど)を実行できる特別なモードでアプリケーションを起動できます。この依存関係を除外する場合は、次の方法で除外できます。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<configuration>
					<layers>
						<enabled>true</enabled>
						<includeLayerTools>false</includeLayerTools>
					</layers>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

5.3.7. カスタムレイヤー構成

デフォルトのセットアップでは、依存関係がスナップショットと非スナップショットに分割されますが、より複雑なルールがある場合があります。例: プロジェクトの会社固有の依存関係を専用レイヤーに分離したい場合があります。次の layers.xml 構成は、そのような設定の 1 つを示しています。

<layers xmlns="http://www.springframework.org/schema/boot/layers"
					  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
					  xsi:schemaLocation="http://www.springframework.org/schema/boot/layers
					  https://www.springframework.org/schema/boot/layers/layers-2.3.xsd">
	<application>
		<into layer="spring-boot-loader">
			<include>org/springframework/boot/loader/**</include>
		</into>
		<into layer="application" />
	</application>
	<dependencies>
		<into layer="snapshot-dependencies">
			<include>*:*:*SNAPSHOT</include>
		</into>
		<into layer="company-dependencies">
			<include>com.acme:*</include>
		</into>
		<into layer="dependencies"/>
	</dependencies>
	<layerOrder>
		<layer>dependencies</layer>
		<layer>spring-boot-loader</layer>
		<layer>snapshot-dependencies</layer>
		<layer>company-dependencies</layer>
		<layer>application</layer>
	</layerOrder>
</layers>

上記の構成では、すべてのライブラリに com.acme groupId を含む追加の company-dependencies レイヤーが作成されます。

6. OCI イメージのパッケージ化

プラグインは Cloud Native Buildpacks (英語) を使用して OCI イメージ [GitHub] (英語) を作成できます。build-image ゴールを使用してイメージを構築できます。

開始する最も簡単な方法は、プロジェクトで mvn spring-boot:build-image を呼び出すことです。次の例に示すように、package フェーズが呼び出されるたびに、イメージの作成を自動化できます。

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<version>2.3.0.RELEASE</version>
			<executions>
				<execution>
					<goals>
						<goal>build-image</goal>
					</goals>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>
buildpack は実行可能アーカイブから実行されますが、実行可能アーカイブは必要に応じて自動的に作成されるため、最初に repackage ゴールを実行する必要はありません。build-image がアプリケーションを再パッケージ化すると、repackage のゴールと同じ設定が適用されます。つまり、除外オプションの 1 つを使用して依存関係を除外でき、デフォルトで Devtools が自動的に除外されます(excludeDevtools プロパティを使用して制御できます)。

6.1. Docker デーモン

build-image ゴールには、Docker デーモンへのアクセスが必要です。デフォルトでは、ローカル接続を介して Docker デーモンと通信します。これは、構成されていないすべてのサポートされているプラットフォーム上の Docker エンジン (英語) で動作します。

minikube が提供する Docker デーモン (英語) を使用するように build-image ゴールを構成するように環境変数を設定できます。次の表は、環境変数とその値を示しています。

環境変数 説明

DOCKER_HOST

Docker デーモンのホストとポートを含む URL- 例 tcp://192.168.99.100:2376

DOCKER_TLS_VERIFY

1 に設定されている場合、安全な HTTPS プロトコルを有効にする (オプション)

DOCKER_CERT_PATH

HTTPS の証明書とキーファイルへのパス (DOCKER_TLS_VERIFY=1 の場合は必須、それ以外の場合は無視)

Linux および macOS では、これらの環境変数は、minikube の起動後にコマンド eval $(minikube docker-env) を使用して設定できます。

6.2. イメージのカスタマイズ

プラグインはビルダー (英語) を呼び出して、イメージの生成を調整します。ビルダーには、生成されたイメージに影響を与えるためにアプリケーションをインスペクションできる複数の buildpacks が含 (英語) まれています。デフォルトでは、プラグインはビルダーイメージを選択します。生成されたイメージの名前は、プロジェクトのプロパティから推測されます。

image パラメーターを使用すると、ビルダーがプロジェクトでどのように動作するかを構成できます。次の表は、使用可能なパラメーターとそのデフォルト値をまとめたものです。

パラメーター 説明 ユーザープロパティ デフォルト値

builder

使用する Builder イメージの名前。

spring-boot.build-image.builder

gcr.io/paketo-buildpacks/builder:base-platform-api-0.3

name

生成されたイメージのイメージ名: (Javadoc)

spring-boot.build-image.imageName

docker.io/library/${project.artifactId}:${project.version}

env

ビルダーに渡す必要のある環境変数。

cleanCache

構築する前にキャッシュを消去するかどうか。

false

verboseLogging

ビルダー操作の詳細ログを有効にします。

false

詳細については、カスタムイメージビルダーカスタムイメージ名を参照してください。

6.3. spring-boot:build-image

org.springframework.boot:spring-boot-maven-plugin:2.3.0.RELEASE

buildpack を使用して、アプリケーションを OCI イメージにパッケージ化します。

6.3.1. 必須パラメーター

名前 タイプ デフォルト

sourceDirectory

File

${project.build.directory}

6.3.2. オプションのパラメーター

名前 タイプ デフォルト

classifier

String

excludeDevtools

boolean

true

excludeGroupIds

String

excludes

List

image

Image

includeSystemScope

boolean

false

includes

List

layers

Layers

layout

AbstractPackagerMojo$LayoutType

layoutFactory

LayoutFactory

mainClass

String

skip

boolean

false

6.3.3. パラメーターの詳細

classifier

ソース jar を見つけるときに使用される分類子。

名前

classifier

タイプ

java.lang.String

デフォルト値

ユーザープロパティ

開始

2.3.0

excludeDevtools

再パッケージ化されたアーカイブから Spring Boot devtools を除外します。

名前

excludeDevtools

タイプ

boolean

デフォルト値

true

ユーザープロパティ

spring-boot.repackage.excludeDevtools

開始

1.3.0

excludeGroupIds

除外する groupId 名のカンマ区切りリスト (完全一致)。

名前

excludeGroupIds

タイプ

java.lang.String

デフォルト値

ユーザープロパティ

spring-boot.excludeGroupIds

開始

1.1.0

excludes

除外するアーティファクト定義のコレクション。Exclude 要素は、groupId および artifactId の必須プロパティと、オプションの classifier プロパティを定義します。

名前

excludes

タイプ

java.util.List

デフォルト値

ユーザープロパティ

spring-boot.excludes

開始

1.1.0

image

buildernameenvcleanCacheverboseLogging オプションを使用したイメージ構成。

名前

image

タイプ

org.springframework.boot.maven.Image

デフォルト値

ユーザープロパティ

開始

2.3.0

includeSystemScope

システムスコープの依存関係を含めます。

名前

includeSystemScope

タイプ

boolean

デフォルト値

false

ユーザープロパティ

開始

1.4.0

includes

含めるアーティファクト定義のコレクション。Include 要素は、groupId および artifactId の必須プロパティと、オプションの classifier プロパティを定義します。

名前

includes

タイプ

java.util.List

デフォルト値

ユーザープロパティ

spring-boot.includes

開始

1.2.0

layers

レイヤーツール jar を除外するオプションを含むレイヤー構成。

名前

layers

タイプ

org.springframework.boot.maven.Layers

デフォルト値

ユーザープロパティ

開始

2.3.0

layout

アーカイブの型(依存関係がその中にどのように配置されるかに対応)。可能な値は、JAR、WAR、ZIP、DIR、NONE です。デフォルトは、アーカイブ型に基づいた推測です。

名前

layout

タイプ

org.springframework.boot.maven.AbstractPackagerMojo$LayoutType

デフォルト値

ユーザープロパティ

spring-boot.repackage.layout

開始

1.0.0

layoutFactory

明示的なレイアウトが設定されていない場合に実行可能アーカイブを作成するために使用されるレイアウトファクトリ。サードパーティが代替レイアウトの実装を提供できます。

名前

layoutFactory

タイプ

org.springframework.boot.loader.tools.LayoutFactory

デフォルト値

ユーザープロパティ

開始

1.5.0

mainClass

メインクラスの名前。指定しない場合、"main" メソッドを含む最初に見つかったコンパイル済みクラスが使用されます。

名前

mainClass

タイプ

java.lang.String

デフォルト値

ユーザープロパティ

開始

1.0.0

skip

実行をスキップします。

名前

skip

タイプ

boolean

デフォルト値

false

ユーザープロパティ

spring-boot.build-image.skip

開始

2.3.0

sourceDirectory

JAR を含むディレクトリ。

名前

sourceDirectory

タイプ

java.io.File

デフォルト値

${project.build.directory}

ユーザープロパティ

開始

2.3.0

6.4. サンプル

6.4.1. カスタムイメージビルダー

イメージの作成に使用するビルダーをカスタマイズする必要がある場合は、次の例に示すようにプラグインを構成します。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<configuration>
					<image>
						<builder>mine/java-cnb-builder</builder>
					</image>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

この構成では、名前 mine/java-cnb-builder およびタグ latest のビルダーイメージを使用します。

この例に示すように、ビルダーはコマンドラインでも指定できます。

$ mvn spring-boot:build-image -Dspring-boot.build-image.builder=mine/java-cnb-builder

6.4.2. ビルダー構成

ビルダーが環境変数を使用して構成オプションを公開する場合、env 属性を使用して設定できます。

次の例では、デフォルトのビルダーが BP_JVM_VERSION プロパティを定義していることを前提としています(通常、イメージが使用する JDK バージョンをカスタマイズするために使用されます)。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<configuration>
					<image>
						<env>
							<BP_JVM_VERSION>13.0.1</BP_JVM_VERSION>
						</env>
					</image>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

ビルダーが実行されている Docker デーモンと buildpacks がアーティファクトをダウンロードするネットワークの場所の間にネットワークプロキシがある場合は、プロキシを使用するようにビルダーを構成する必要があります。デフォルトのビルダーを使用する場合、これは、次の例に示すように、HTTPS_PROXY および / または HTTP_PROXY 環境変数を設定することで実現できます。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<configuration>
					<image>
						<env>
							<HTTP_PROXY>http://proxy.example.com</HTTP_PROXY>
							<HTTPS_PROXY>https://proxy.example.com</HTTPS_PROXY>
						</env>
					</image>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

6.4.3. カスタムイメージ名

デフォルトでは、イメージ名はプロジェクトの artifactId および version から推測されます(docker.io/library/${project.artifactId}:${project.version} など)。次の例に示すように、名前を制御できます。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<configuration>
					<image>
						<name>example.com/library/${project.artifactId}</name>
					</image>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

この構成では明示的なタグが提供されないため、latest が使用されることに注意してください。${project.version}、ビルドで使用可能なプロパティ、ハードコードされたバージョンのいずれかを使用して、タグを指定することもできます。

次の例に示すように、イメージ名はコマンドラインでも指定できます。

$ mvn spring-boot:build-image -Dspring-boot.build-image.imageName=example.com/library/v1

7. Maven でアプリケーションを実行する

プラグインには、次の例に示すように、コマンドラインからアプリケーションを起動するために使用できる実行ゴールが含まれています。

$ mvn spring-boot:run

アプリケーション引数は、arguments パラメーターを使用して指定できます。詳細については、アプリケーション引数の使用を参照してください。

デフォルトでは、アプリケーションは分岐したプロセスで実行され、コマンドラインでプロパティを設定してもアプリケーションには影響しません。いくつかの JVM 引数を指定する必要がある場合(つまり、デバッグ目的で)、jvmArguments パラメーターを使用できます。詳細については、アプリケーションをデバッグするを参照してください。システムプロパティと環境変数の明示的なサポートもあります。

プロファイルを有効にすることは非常に一般的であるため、-Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" のショートカットを提供する専用の profiles プロパティがあります。アクティブなプロファイルを指定するを参照してください。

これは推奨されませんが、fork プロパティを無効にすることで、Maven JVM から直接アプリケーションを実行することができます。そうすることは、jvmArgumentssystemPropertyVariablesenvironmentVariablesagents オプションが無視されることを意味します。

Spring Boot devtools は、Spring Boot アプリケーションで作業する際の開発時のエクスペリエンスを改善するモジュールです。有効にするには、次の依存関係をプロジェクトに追加するだけです:

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-devtools</artifactId>
		<version>2.3.0.RELEASE</version>
		<optional>true</optional>
	</dependency>
</dependencies>

devtools が実行中の場合、アプリケーションを再コンパイルすると変更が検出され、自動的にリフレッシュされます。これはリソースだけでなくコードでも機能します。また、LiveReload サーバーも提供するため、状況が変化するたびにブラウザーのリフレッシュを自動的にトリガーできます。

Devtools は、静的リソースが変更された場合にのみブラウザーをリフレッシュするように構成することもできます(コードの変更は無視します)。プロジェクトに次のプロパティを含めるだけです。

spring.devtools.remote.restart.enabled=false

devtools より前は、プラグインはデフォルトでリソースのホットリフレッシュをサポートしていましたが、上記のソリューションを優先して無効になりました。プロジェクトを構成することにより、いつでも復元できます。

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<version>2.3.0.RELEASE</version>
			<configuration>
				<addResources>true</addResources>
			</configuration>
		</plugin>
	</plugins>
</build>

addResources が有効になっている場合、アプリケーションを実行すると src/main/resources ディレクトリがアプリケーションのクラスパスに追加され、target/classes で見つかった重複は削除されます。これにより、Web アプリケーションの開発時に非常に役立つリソースのホットリフレッシュが可能になります。例: HTML、CSS、JavaScript ファイルで作業し、アプリケーションを再コンパイルせずに変更をすぐに確認できます。また、Java IDE をダウンロードしてインストールしなくても、フロントエンド開発者が作業できるようにするための便利な方法です。

この機能を使用する副作用は、ビルド時にリソースのフィルタリングが機能しないことです。

repackage のゴールと一致するために、run のゴールは、プラグインの構成で除外されている依存関係がクラスパスからも除外されるようにクラスパスを構築します。詳細については、専用の例を参照してください。

アプリケーションの実行時にテストの依存関係を含めると便利な場合があります。例: スタブクラスを使用するテストモードでアプリケーションを実行する場合。これを行う場合は、useTestClasspath パラメーターを true に設定できます。これは、アプリケーションの実行時にのみ適用されることに注意してください。repackage のゴールは、結果の JAR/WAR にテストの依存関係を追加しません。

7.1. spring-boot:run

org.springframework.boot:spring-boot-maven-plugin:2.3.0.RELEASE

アプリケーションを所定の場所で実行します。

7.1.1. 必須パラメーター

名前 タイプ デフォルト

classesDirectory

File

${project.build.outputDirectory}

7.1.2. オプションのパラメーター

名前 タイプ デフォルト

addResources

boolean

false

agents

File[]

arguments

String[]

commandlineArguments

String

directories

String[]

environmentVariables

Map

excludeGroupIds

String

excludes

List

folders

String[]

fork

boolean

true

includes

List

jvmArguments

String

mainClass

String

noverify

boolean

optimizedLaunch

boolean

true

profiles

String[]

skip

boolean

false

systemPropertyVariables

Map

useTestClasspath

Boolean

false

workingDirectory

File

7.1.3. パラメーターの詳細

addResources

maven リソースをクラスパスに直接追加します。これにより、リソースのインプレース編集をライブで行うことができます。target/classes から重複するリソースは削除され、ClassLoader.getResources() が呼び出された場合に重複して表示されることを防ぎます。spring-boot-devtools をプロジェクトに追加することを検討してください。この機能やその他の機能を提供します。

名前

addResources

タイプ

boolean

デフォルト値

false

ユーザープロパティ

spring-boot.run.addResources

開始

1.0.0

agents

エージェント jar へのパス。注: この機能を使用するには、分岐したプロセスが必要です。

名前

agents

タイプ

java.io.File[]

デフォルト値

ユーザープロパティ

spring-boot.run.agents

開始

2.2.0

arguments

アプリケーションに渡す必要のある引数。

名前

arguments

タイプ

java.lang.String[]

デフォルト値

ユーザープロパティ

開始

1.0.0

classesDirectory

アーカイブにパッケージ化する必要があるクラスとリソースファイルを含むディレクトリ。

名前

classesDirectory

タイプ

java.io.File

デフォルト値

${project.build.outputDirectory}

ユーザープロパティ

開始

1.0.0

commandlineArguments

アプリケーションに渡す必要のあるコマンドラインからの引数。スペースを使用して複数の引数を区切り、引用符で複数の値を囲むようにしてください。指定すると、#arguments よりも優先されます。

名前

commandlineArguments

タイプ

java.lang.String

デフォルト値

ユーザープロパティ

spring-boot.run.arguments

開始

2.2.3

directories

クラスパスに追加する必要のあるクラスディレクトリ以外の追加のディレクトリ。

名前

directories

タイプ

java.lang.String[]

デフォルト値

ユーザープロパティ

spring-boot.run.directories

開始

1.0.0

environmentVariables

アプリケーションの実行に使用される分岐プロセスに関連付けられる環境変数のリスト。注: この機能を使用するには、分岐したプロセスが必要です。

名前

environmentVariables

タイプ

java.util.Map

デフォルト値

ユーザープロパティ

開始

2.1.0

excludeGroupIds

除外する groupId 名のカンマ区切りリスト (完全一致)。

名前

excludeGroupIds

タイプ

java.lang.String

デフォルト値

ユーザープロパティ

spring-boot.excludeGroupIds

開始

1.1.0

excludes

除外するアーティファクト定義のコレクション。Exclude 要素は、groupId および artifactId の必須プロパティと、オプションの classifier プロパティを定義します。

名前

excludes

タイプ

java.util.List

デフォルト値

ユーザープロパティ

spring-boot.excludes

開始

1.1.0

folders

クラスパスに追加する必要のあるクラスディレクトリ以外の追加のディレクトリ。

名前

folders

タイプ

java.lang.String[]

デフォルト値

ユーザープロパティ

spring-boot.run.folders

開始

1.0.0

fork

実行プロセスを分岐する必要があるかどうかを示すフラグ。フォークを無効にすると、エージェント、カスタム JVM 引数、devtools、使用する作業ディレクトリの指定などの一部の機能が無効になります。

名前

fork

タイプ

boolean

デフォルト値

true

ユーザープロパティ

spring-boot.run.fork

開始

1.2.0

includes

含めるアーティファクト定義のコレクション。Include 要素は、groupId および artifactId の必須プロパティと、オプションの classifier プロパティを定義します。

名前

includes

タイプ

java.util.List

デフォルト値

ユーザープロパティ

spring-boot.includes

開始

1.2.0

jvmArguments

アプリケーションの実行に使用される分岐プロセスに関連付けられる JVM 引数。コマンドラインで、引用符で複数の値を囲むようにしてください。注: この機能を使用するには、分岐したプロセスが必要です。

名前

jvmArguments

タイプ

java.lang.String

デフォルト値

ユーザープロパティ

spring-boot.run.jvmArguments

開始

1.1.0

mainClass

メインクラスの名前。指定しない場合、"main" メソッドを含む最初に見つかったコンパイル済みクラスが使用されます。

名前

mainClass

タイプ

java.lang.String

デフォルト値

ユーザープロパティ

spring-boot.run.main-class

開始

1.0.0

noverify

エージェントが -noverify を必要とすることを示すフラグ。

名前

noverify

タイプ

boolean

デフォルト値

ユーザープロパティ

spring-boot.run.noverify

開始

1.0.0

optimizedLaunch

JVM の起動を最適化する必要があるかどうか。

名前

optimizedLaunch

タイプ

boolean

デフォルト値

true

ユーザープロパティ

spring-boot.run.optimizedLaunch

開始

2.2.0

profiles

アクティブにする Spring プロファイル。'spring.profiles.active' 引数を指定する便利なショートカット。コマンドラインでは、コンマを使用して複数のプロファイルを区切ります。

名前

profiles

タイプ

java.lang.String[]

デフォルト値

ユーザープロパティ

spring-boot.run.profiles

開始

1.3.0

skip

実行をスキップします。

名前

skip

タイプ

boolean

デフォルト値

false

ユーザープロパティ

spring-boot.run.skip

開始

1.3.2

systemPropertyVariables

プロセスに渡す JVM システムプロパティのリスト。注: この機能を使用するには、分岐したプロセスが必要です。

名前

systemPropertyVariables

タイプ

java.util.Map

デフォルト値

ユーザープロパティ

開始

2.1.0

useTestClasspath

実行時にテストクラスパスを含めるフラグ。

名前

useTestClasspath

タイプ

java.lang.Boolean

デフォルト値

false

ユーザープロパティ

spring-boot.run.useTestClasspath

開始

1.3.0

workingDirectory

アプリケーションに使用する現在の作業ディレクトリ。指定しない場合、basedir が使用されます。注: この機能を使用するには、分岐したプロセスが必要です。

名前

workingDirectory

タイプ

java.io.File

デフォルト値

ユーザープロパティ

spring-boot.run.workingDirectory

開始

1.5.0

7.2. サンプル

7.2.1. アプリケーションをデバッグする

デフォルトでは、run ゴールは、分岐したプロセスでアプリケーションを実行します。デバッグする必要がある場合は、リモートデバッグを有効にするために必要な JVM 引数を追加する必要があります。次の構成では、デバッガーがポート 5005 で参加するまでプロセスを中断します。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<configuration>
					<jvmArguments>
						-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
					</jvmArguments>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

これらの引数はコマンドラインでも指定できます。適切にラップするようにしてください。

$ mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"

7.2.2. システムプロパティの使用

システムプロパティは、systemPropertyVariables 属性を使用して指定できます。次の例では、property1 を test に、property2 を 42 に設定します。

<project>
	<build>
		<properties>
			<my.value>42</my.value>
		</properties>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<configuration>
					<systemPropertyVariables>
						<property1>test</property1>
						<property2>${my.value}</property2>
					</systemPropertyVariables>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

値が空または定義されていない場合(つまり、<my-property/>)、システムプロパティは値として空の文字列で設定されます。Maven は pom で指定された値をトリムするため、このメカニズムを介してスペースで開始または終了する必要があるシステムプロパティを指定することはできません。代わりに jvmArguments の使用を検討してください。

String 型の Maven 変数は、システムプロパティとして渡すことができます。他の Maven 変数型(例: List または URL 変数)を渡そうとすると、変数式がそのまま(未評価)渡されます。

jvmArguments パラメーターは、上記のメカニズムで定義されたシステムプロパティよりも優先されます。次の例では、property1 の値は overridden です。

$ mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dproperty1=overridden"

7.2.3. 環境変数の使用

環境変数は、environmentVariables 属性を使用して指定できます。次の例では、"ENV1"、"ENV2"、"ENV3"、"ENV4" の env 変数を設定します。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<configuration>
					<environmentVariables>
						<ENV1>5000</ENV1>
						<ENV2>Some Text</ENV2>
						<ENV3/>
						<ENV4></ENV4>
					</environmentVariables>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

値が空であるか定義されていない場合(つまり、<MY_ENV/>)、env 変数は値として空の文字列で設定されます。Maven は pom で指定された値をトリミングするため、スペースで開始または終了する必要がある env 変数を指定することはできません。

String 型の Maven 変数は、システムプロパティとして渡すことができます。他の Maven 変数型(例: List または URL 変数)を渡そうとすると、変数式がそのまま(未評価)渡されます。

この方法で定義された環境変数は、既存の値よりも優先されます。

7.2.4. アプリケーション引数の使用

アプリケーションの引数は、arguments 属性を使用して指定できます。次の例では、2 つの引数 property1 および property2=42 を設定します。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<configuration>
					<arguments>
						<argument>property1</argument>
						<argument>property2=${my.value}</argument>
					</arguments>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

コマンドラインでは、引数は jvmArguments と同じようにスペースで区切られます。引数にスペースが含まれる場合は、必ず引用符で囲んでください。次の例では、2 つの引数 property1 および property2=Hello World を使用できます。

$ mvn spring-boot:run -Dspring-boot.run.arguments="property1 'property2=Hello World'"

7.2.5. アクティブなプロファイルを指定する

特定のアプリケーションに使用するアクティブなプロファイルは、profiles 引数を使用して指定できます。

次の構成により、foo および bar プロファイルが有効になります。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<configuration>
					<profiles>
						<profile>foo</profile>
						<profile>bar</profile>
					</profiles>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

有効にするプロファイルは、コマンドラインでも指定できます。次の例に示すように、必ずコンマで区切ります。

$ mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar

8. 統合テストの実行

Spring Boot アプリケーションはテスト(またはテストスイート)自体から非常に簡単に起動できますが、ビルド自体で処理することが望ましい場合があります。Spring Boot アプリケーションのライフサイクルが統合テストを中心に適切に管理されていることを確認するには、次の例に示すように、start および stop ゴールを使用できます。

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<version>2.3.0.RELEASE</version>
			<executions>
				<execution>
					<id>pre-integration-test</id>
					<goals>
						<goal>start</goal>
					</goals>
				</execution>
				<execution>
					<id>post-integration-test</id>
					<goals>
						<goal>stop</goal>
					</goals>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>

このようなセットアップでは、フェイルセーフプラグイン [Apache] (英語) を使用して、期待どおりに統合テストを実行できます。

特定のプロパティが設定されたときに統合テストをスキップするように、より高度なセットアップを構成することもできます。専用の例を参照してください。

8.1. spring-boot:start

org.springframework.boot:spring-boot-maven-plugin:2.3.0.RELEASE

Spring のアプリケーションを開始します。run のゴールに反して、これはブロックせず、他のゴールがアプリケーションで動作することを許可します。このゴールは、通常、テストスイートの前にアプリケーションが開始され、その後に停止される統合テストシナリオで使用されます。

8.1.1. 必須パラメーター

名前 タイプ デフォルト

classesDirectory

File

${project.build.outputDirectory}

8.1.2. オプションのパラメーター

名前 タイプ デフォルト

addResources

boolean

false

agents

File[]

arguments

String[]

commandlineArguments

String

directories

String[]

environmentVariables

Map

excludeGroupIds

String

excludes

List

folders

String[]

fork

boolean

true

includes

List

jmxName

String

jmxPort

int

jvmArguments

String

mainClass

String

maxAttempts

int

noverify

boolean

profiles

String[]

skip

boolean

false

systemPropertyVariables

Map

useTestClasspath

Boolean

false

wait

long

workingDirectory

File

8.1.3. パラメーターの詳細

addResources

maven リソースをクラスパスに直接追加します。これにより、リソースのインプレース編集をライブで行うことができます。target/classes から重複するリソースは削除され、ClassLoader.getResources() が呼び出された場合に重複して表示されることを防ぎます。spring-boot-devtools をプロジェクトに追加することを検討してください。この機能やその他の機能を提供します。

名前

addResources

タイプ

boolean

デフォルト値

false

ユーザープロパティ

spring-boot.run.addResources

開始

1.0.0

agents

エージェント jar へのパス。注: この機能を使用するには、分岐したプロセスが必要です。

名前

agents

タイプ

java.io.File[]

デフォルト値

ユーザープロパティ

spring-boot.run.agents

開始

2.2.0

arguments

アプリケーションに渡す必要のある引数。

名前

arguments

タイプ

java.lang.String[]

デフォルト値

ユーザープロパティ

開始

1.0.0

classesDirectory

アーカイブにパッケージ化する必要があるクラスとリソースファイルを含むディレクトリ。

名前

classesDirectory

タイプ

java.io.File

デフォルト値

${project.build.outputDirectory}

ユーザープロパティ

開始

1.0.0

commandlineArguments

アプリケーションに渡す必要のあるコマンドラインからの引数。スペースを使用して複数の引数を区切り、引用符で複数の値を囲むようにしてください。指定すると、#arguments よりも優先されます。

名前

commandlineArguments

タイプ

java.lang.String

デフォルト値

ユーザープロパティ

spring-boot.run.arguments

開始

2.2.3

directories

クラスパスに追加する必要のあるクラスディレクトリ以外の追加のディレクトリ。

名前

directories

タイプ

java.lang.String[]

デフォルト値

ユーザープロパティ

spring-boot.run.directories

開始

1.0.0

environmentVariables

アプリケーションの実行に使用される分岐プロセスに関連付けられる環境変数のリスト。注: この機能を使用するには、分岐したプロセスが必要です。

名前

environmentVariables

タイプ

java.util.Map

デフォルト値

ユーザープロパティ

開始

2.1.0

excludeGroupIds

除外する groupId 名のカンマ区切りリスト (完全一致)。

名前

excludeGroupIds

タイプ

java.lang.String

デフォルト値

ユーザープロパティ

spring-boot.excludeGroupIds

開始

1.1.0

excludes

除外するアーティファクト定義のコレクション。Exclude 要素は、groupId および artifactId の必須プロパティと、オプションの classifier プロパティを定義します。

名前

excludes

タイプ

java.util.List

デフォルト値

ユーザープロパティ

spring-boot.excludes

開始

1.1.0

folders

クラスパスに追加する必要のあるクラスディレクトリ以外の追加のディレクトリ。

名前

folders

タイプ

java.lang.String[]

デフォルト値

ユーザープロパティ

spring-boot.run.folders

開始

1.0.0

fork

実行プロセスを分岐する必要があるかどうかを示すフラグ。フォークを無効にすると、エージェント、カスタム JVM 引数、devtools、使用する作業ディレクトリの指定などの一部の機能が無効になります。

名前

fork

タイプ

boolean

デフォルト値

true

ユーザープロパティ

spring-boot.run.fork

開始

1.2.0

includes

含めるアーティファクト定義のコレクション。Include 要素は、groupId および artifactId の必須プロパティと、オプションの classifier プロパティを定義します。

名前

includes

タイプ

java.util.List

デフォルト値

ユーザープロパティ

spring-boot.includes

開始

1.2.0

jmxName

spring アプリケーションのライフサイクルを管理する、自動的にデプロイされた MBean の JMX 名。

名前

jmxName

タイプ

java.lang.String

デフォルト値

ユーザープロパティ

開始

jmxPort

アプリケーションがフォークされている場合にプラットフォーム MBeanServer を公開するために使用するポート。

名前

jmxPort

タイプ

int

デフォルト値

ユーザープロパティ

開始

jvmArguments

アプリケーションの実行に使用される分岐プロセスに関連付けられる JVM 引数。コマンドラインで、引用符で複数の値を囲むようにしてください。注: この機能を使用するには、分岐したプロセスが必要です。

名前

jvmArguments

タイプ

java.lang.String

デフォルト値

ユーザープロパティ

spring-boot.run.jvmArguments

開始

1.1.0

mainClass

メインクラスの名前。指定しない場合、"main" メソッドを含む最初に見つかったコンパイル済みクラスが使用されます。

名前

mainClass

タイプ

java.lang.String

デフォルト値

ユーザープロパティ

spring-boot.run.main-class

開始

1.0.0

maxAttempts

Spring アプリケーションの準備ができているかどうかを確認する最大試行回数。"wait" 引数と組み合わせると、グローバルタイムアウト値が得られます (デフォルトでは 30 秒)

名前

maxAttempts

タイプ

int

デフォルト値

ユーザープロパティ

開始

noverify

エージェントが -noverify を必要とすることを示すフラグ。

名前

noverify

タイプ

boolean

デフォルト値

ユーザープロパティ

spring-boot.run.noverify

開始

1.0.0

profiles

アクティブにする Spring プロファイル。'spring.profiles.active' 引数を指定する便利なショートカット。コマンドラインでは、コンマを使用して複数のプロファイルを区切ります。

名前

profiles

タイプ

java.lang.String[]

デフォルト値

ユーザープロパティ

spring-boot.run.profiles

開始

1.3.0

skip

実行をスキップします。

名前

skip

タイプ

boolean

デフォルト値

false

ユーザープロパティ

spring-boot.run.skip

開始

1.3.2

systemPropertyVariables

プロセスに渡す JVM システムプロパティのリスト。注: この機能を使用するには、分岐したプロセスが必要です。

名前

systemPropertyVariables

タイプ

java.util.Map

デフォルト値

ユーザープロパティ

開始

2.1.0

useTestClasspath

実行時にテストクラスパスを含めるフラグ。

名前

useTestClasspath

タイプ

java.lang.Boolean

デフォルト値

false

ユーザープロパティ

spring-boot.run.useTestClasspath

開始

1.3.0

wait

Spring アプリケーションの準備ができているかどうかを確認する各試行の間に待機するミリ秒数。

名前

wait

タイプ

long

デフォルト値

ユーザープロパティ

開始

workingDirectory

アプリケーションに使用する現在の作業ディレクトリ。指定しない場合、basedir が使用されます。注: この機能を使用するには、分岐したプロセスが必要です。

名前

workingDirectory

タイプ

java.io.File

デフォルト値

ユーザープロパティ

spring-boot.run.workingDirectory

開始

1.5.0

8.2. spring-boot:stop

org.springframework.boot:spring-boot-maven-plugin:2.3.0.RELEASE

「開始」ゴールによって開始されたアプリケーションを停止します。通常、テストスイートが完了すると呼び出されます。

8.2.1. オプションのパラメーター

名前 タイプ デフォルト

fork

Boolean

jmxName

String

jmxPort

int

skip

boolean

false

8.2.2. パラメーターの詳細

fork

停止するプロセスがフォークされたかどうかを示すフラグ。デフォルトでは、値は MavenProject から継承されます。設定されている場合、StartMojo start プロセスに使用される値と一致する必要があります。

名前

fork

タイプ

java.lang.Boolean

デフォルト値

ユーザープロパティ

spring-boot.stop.fork

開始

1.3.0

jmxName

アプリケーションのライフサイクルを管理する、自動的にデプロイされた MBean の JMX 名。

名前

jmxName

タイプ

java.lang.String

デフォルト値

ユーザープロパティ

開始

jmxPort

アプリケーションがフォークされている場合にプラットフォーム MBeanServer をルックアップするために使用するポート。

名前

jmxPort

タイプ

int

デフォルト値

ユーザープロパティ

開始

skip

実行をスキップします。

名前

skip

タイプ

boolean

デフォルト値

false

ユーザープロパティ

spring-boot.stop.skip

開始

1.3.2

8.3. サンプル

8.3.1. 統合テスト用のランダムポート

Spring Boot テスト統合の優れた機能の 1 つは、Web アプリケーションに空きポートを割り当てることができることです。プラグインの start ゴールが使用されると、Spring Boot アプリケーションが個別に開始され、統合テスト自体に実際のポートを渡すことが難しくなります。

以下の例は、ビルドヘルパー Maven プラグイン (英語) を使用して同じ機能を実現する方法を示しています。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>build-helper-maven-plugin</artifactId>
				<version>1.2.3</version>
				<executions>
					<execution>
						<id>reserve-tomcat-port</id>
						<goals>
							<goal>reserve-network-port</goal>
						</goals>
						<phase>process-resources</phase>
						<configuration>
							<portNames>
								<portName>tomcat.http.port</portName>
							</portNames>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<executions>
					<execution>
						<id>pre-integration-test</id>
						<goals>
							<goal>start</goal>
						</goals>
						<configuration>
							<arguments>
								<argument>--server.port=${tomcat.http.port}</argument>
							</arguments>
						</configuration>
					</execution>
					<execution>
						<id>post-integration-test</id>
						<goals>
							<goal>stop</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-failsafe-plugin</artifactId>
				<version>1.2.3</version>
				<configuration>
					<systemPropertyVariables>
						<test.server.port>${tomcat.http.port}</test.server.port>
					</systemPropertyVariables>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

統合テストのいずれかで test.server.port システムプロパティを取得して、サーバーに対して適切な URL を作成できるようになりました。

8.3.2. 統合テストをスキップ

skip プロパティにより、Spring Boot maven プラグインの実行を完全にスキップできます。

この例は、コマンドラインプロパティを使用した統合テストをスキップし、repackage ゴールが実行されることを確認する方法を示しています。

<project>
	<properties>
		<skip.it>false</skip.it>
	</properties>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<executions>
					<execution>
						<id>pre-integration-test</id>
						<goals>
							<goal>start</goal>
						</goals>
						<configuration>
							<skip>${skip.it}</skip>
						</configuration>
					</execution>
					<execution>
						<id>post-integration-test</id>
						<goals>
							<goal>stop</goal>
						</goals>
						<configuration>
							<skip>${skip.it}</skip>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-failsafe-plugin</artifactId>
				<version>1.2.3</version>
				<configuration>
					<skip>${skip.it}</skip>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

デフォルトでは、統合テストが実行されますが、このセットアップにより、次のようにコマンドラインで簡単に無効化できます。

$ mvn verify -Dskip.it=true

9. アクチュエーターとの統合

Spring Boot Actuator は、META-INF/build-info.properties ファイルが存在する場合、ビルド関連情報を表示します。build-info ゴールは、プロジェクトの座標とビルド時間を含むそのようなファイルを生成します。また、次の例に示すように、任意の数の追加プロパティを追加できます。

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.3.0.RELEASE</version>
				<executions>
					<execution>
						<goals>
							<goal>build-info</goal>
						</goals>
						<configuration>
							<additionalProperties>
								<encoding.source>UTF-8</encoding.source>
								<encoding.reporting>UTF-8</encoding.reporting>
								<java.source>${maven.compiler.source}</java.source>
								<java.target>${maven.compiler.target}</java.target>
							</additionalProperties>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>

この構成は、4 つの追加キーを使用して、予想される場所に build-info.properties を生成します。maven.compiler.source および maven.compiler.target は、プロジェクトで利用可能な通常のプロパティであると予想されることに注意してください。予想どおりに補間されます。

9.1. spring-boot:build-info

org.springframework.boot:spring-boot-maven-plugin:2.3.0.RELEASE

現在の MavenProject のコンテンツに基づいて build-info.properties ファイルを生成します。

9.1.1. オプションのパラメーター

名前 タイプ デフォルト

additionalProperties

Map

outputFile

File

${project.build.outputDirectory}/META-INF/build-info.properties

time

String

9.1.2. パラメーターの詳細

additionalProperties

build-info.properties に保存する追加のプロパティ。生成された build-info.properties では、各エントリの先頭に build. が付きます。

名前

additionalProperties

タイプ

java.util.Map

デフォルト値

ユーザープロパティ

開始

outputFile

生成された build-info.properties の場所。

名前

outputFile

タイプ

java.io.File

デフォルト値

${project.build.outputDirectory}/META-INF/build-info.properties

ユーザープロパティ

開始

time

Instant#parse(CharSequence) に適した形式で build.time プロパティに使用される値。デフォルトは session.request.startTime です。build.time プロパティを完全に無効にするには、'off' を使用します。

名前

time

タイプ

java.lang.String

デフォルト値

ユーザープロパティ

開始

2.2.0

10. ヘルプ情報

help のゴールは、プラグインの機能に関する情報を表示する標準のゴールです。

10.1. spring-boot:help

org.springframework.boot:spring-boot-maven-plugin:2.3.0.RELEASE

spring-boot-maven-plugin に関するヘルプ情報を表示します。mvn spring-boot:help -Ddetail=true -Dgoal=<goal-name> を呼び出して、パラメーターの詳細を表示します。

10.1.1. オプションのパラメーター

名前 タイプ デフォルト

detail

boolean

false

goal

String

indentSize

int

2

lineLength

int

80

10.1.2. パラメーターの詳細

detail

true の場合、各ゴールのすべての設定可能なプロパティを表示します。

名前

detail

タイプ

boolean

デフォルト値

false

ユーザープロパティ

detail

開始

goal

ヘルプを表示するゴールの名前。指定しない場合、すべてのゴールが表示されます。

名前

goal

タイプ

java.lang.String

デフォルト値

ユーザープロパティ

goal

開始

indentSize

インデントレベルごとのスペースの数は、正でなければなりません。

名前

indentSize

タイプ

int

デフォルト値

2

ユーザープロパティ

indentSize

開始

lineLength

表示行の最大長は正でなければなりません。

名前

lineLength

タイプ

int

デフォルト値

80

ユーザープロパティ

lineLength

開始