Spring Boot Starterの親

1. 前書き

このチュートリアルでは、__ spring-boot-starter-parent __について学び、依存関係管理の改善、プラグインのデフォルト設定、_Spring Boot_アプリケーションの迅速な構築のためにそれをどのように活用できるかを学びます。
また、_starter-parent._によって提供される既存の依存関係とプロパティのバージョンをオーバーライドする方法も確認します。

2. Spring Boot Starter Parent

_spring-boot-starter-parent_プロジェクトは特別なスタータープロジェクトです。これは、アプリケーションのデフォルト構成と完全な依存関係ツリーを提供して、_Spring Boot_プロジェクトを迅速に構築します。
また、_maven-failsafe-plugin _、_ maven-jar-plugin _、_ maven-surefire-plugin _、_ maven-war-plugin_などのMavenプラグインのデフォルト設定も提供します。
さらに、s__pring-boot-starter-parent__の親である_spring-boot-dependencies_から依存関係管理も継承します。
これをプロジェクトの_pom.xml_の親として追加することにより、プロジェクトで使用を開始できます。
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.5.RELEASE</version>
</parent>
https://search.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22spring-boot-starter-parent%22[_spring-boot-starter-parent_]の最新バージョンはいつでも入手できます。 Maven Central。

3. 依存関係の管理

プロジェクトでスターター親を宣言したら、_dependencies_タグで宣言するだけで、親から依存関係を取得できます。
また、依存関係のバージョンを定義する必要はありません。Mavenは親タグのスターター親に定義されたバージョンに基づいてjarファイルをダウンロードします。
たとえば、Webプロジェクトを構築する場合、_spring-boot-starter-web_を直接追加できます。バージョンを指定する必要はありません。
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

4. 依存関係管理タグ

スターター親によって提供される依存関係の異なるバージョンを管理するために、依存関係とそのバージョンを_dependencyManagement_セクションで明示的に宣言できます。
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
    </dependencies>
</dependencyManagement>

5. プロパティ

*親スターターで定義されたプロパティの値を変更するには、プロパティセクションで再宣言できます。*
親の_spring-boot-dependencies_を介した_spring-boot-starter-parent_は、すべての依存関係バージョン、Javaバージョン、およびMavenプラグインバージョンを構成するためにプロパティを使用します。
したがって、対応するプロパティを変更するだけで、これらの構成を簡単に制御できます。
スターターの親からプルする依存関係のバージョンを変更する場合、依存関係タグに依存関係を追加し、そのプロパティを直接構成できます。
<properties>
    <junit.version>4.11</junit.version>
</properties>

6. その他のプロパティのオーバーライド

また、プラグインバージョンの管理などの他の構成や、Javaバージョンの管理、ソースエンコーディングなどの基本構成にもプロパティを使用できます。
新しい値でプロパティを再宣言するだけです。
たとえば、Javaバージョンを変更するには、_java.version_プロパティで指定できます。
<properties>
    <java.version>1.8</java.version>
</properties>

7. Starter ParentのないSpring Bootプロジェクト

時々、カスタムMaven親があります。 または、すべてのMaven構成を手動で宣言することもできます。
その場合、_spring-boot-starter-parent_プロジェクトを使用しないことを選択できます。 ただし、プロジェクトに__import__スコープの依存関係spring-boot-dependenciesを追加することで、依存関係ツリーの恩恵を受けることができます。
これを、スターター親以外の別の親を使用する簡単な例で説明しましょう。
<parent>
    <groupId>com.baeldung</groupId>
    <artifactId>spring-boot-parent</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</parent>
ここでは、親プロジェクトとして__parent-modules __aの異なるプロジェクトを使用しています。
さて、この場合、_import_スコープと_pom_タイプに追加することで、依存関係管理と同じ利点を得ることができます:
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.1.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
さらに、前の例で行ったように、_dependencies_で宣言するだけで、依存関係を取り込むことができます。 これらの依存関係にバージョン番号は必要ありません。

8. 概要

このチュートリアルでは、_spring-boot-starter-parent_の概要と、それを子プロジェクトの親として追加する利点について説明しました。
次に、依存関係を管理する方法を学びました。 _dependencyManagement_またはプロパティを介して依存関係をオーバーライドできます。
このチュートリアルで使用するスニペットのソースコードは、https://github.com/eugenp/tutorials/tree/master/spring-boot-parent [Github]で入手できます。1つはスターターの親を使用し、もう1つはカスタムの親を使用します。