プラグインの使用
Maven ユーザーは、spring-boot-starter-parent
プロジェクトから継承して、適切なデフォルトを取得できます。親プロジェクトは次の機能を提供します。
デフォルトのコンパイラーレベルとしての Java 17。
UTF-8 ソースエンコーディング。
-parameters
を使用したコンパイル。共通の依存関係のバージョンを管理する、
spring-boot-dependencies
POM から継承された依存関係管理セクション。この依存関係管理により、独自の POM で使用するときに、これらの依存関係の<version>
タグを省略できます。repackage
実行 ID を使用したrepackage
ゴールの実行。ネイティブイメージを生成できるようにビルドを構成する
native
プロファイル。実用的なプラグイン構成(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 プロパティを設定することにより、それをオーバーライドできます。) |
次に、代わりにソースとターゲットのオプションを構成します。
|
親スターター POM の継承
spring-boot-starter-parent
から継承するようにプロジェクトを構成するには、parent
を次のように設定します。
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.4.1</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 リファレンスの依存関係バージョンのプロパティセクションを参照してください。
親 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>3.4.1</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>2020.0.0-SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>3.4.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
コマンドラインで設定を上書きする
このプラグインには、spring-boot
をはじめとする多数のユーザープロパティが用意されており、コマンドラインから構成をカスタマイズできます。
たとえば、次のように、アプリケーションの実行時に有効になるようにプロファイルを調整できます。
$ mvn spring-boot:run -Dspring-boot.run.profiles=dev,local
デフォルトを設定し、コマンドラインでそれを上書きできるようにするには、ユーザー指定のプロジェクトプロパティと MOJO 構成を組み合わせて使用する必要があります。
<project>
<properties>
<app.profiles>local,dev</app.profiles>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<profiles>${app.profiles}</profiles>
</configuration>
</plugin>
</plugins>
</build>
</project>
上記により、local
と dev
がデフォルトで有効になります。専用のプロパティが公開されたため、コマンドラインでもこれを上書きできます。
$ mvn spring-boot:run -Dapp.profiles=test