1. 簡介
在本教程中,我們將學習 spring-boot-starter-parent。我們將討論如何利用它進行更好的依賴管理、默認配置插件,以及快速構建我們的 Spring Boot 應用程序。
我們還將看到如何覆蓋 starter-parent 提供的現有依賴項和屬性的版本。
2. Spring Boot Starter Parent
`spring-boot-starter-parent 項目是一個特殊的 Starter 項目,它為我們的應用程序提供默認配置,並提供完整的依賴樹,以便快速構建我們的 Spring Boot 項目。它還提供默認配置,例如 maven-failsafe-plugin、maven-jar-plugin、maven-surefire-plugin 和 maven-war-plugin。
除此之外,它還繼承了 spring-boot-dependencies 的依賴管理功能,後者是 spring-boot-starter-parent 的父項目。
我們可以通過在項目的 pom.xml 中將其添加為父項目來開始使用它:`
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.5</version>
</parent>我們可以在 Maven Central 找到最新版本的 spring-boot-starter-parent。
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. 依賴管理標籤
為了管理啓動父項目提供的不同版本的依賴項,我們可以明確地在 <em >dependencyManagement</em> 部分聲明依賴項及其版本:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>3.1.5</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>17</java.version>
</properties>7. 不使用 Spring Boot Starter 作為父模塊的項目
有時我們擁有自定義的 Maven 父模塊,或者我們更喜歡手動聲明所有 Maven 配置。
在這種情況下,我們可以選擇不使用 <em>spring-boot-starter-parent</em> 項目。但是,我們仍然可以從其依賴樹中受益,通過在項目中以 <em>import</em> 範圍添加依賴,<em>spring-boot-dependencies</em>。
讓我們用一個簡單的例子來演示,使用除了 starter 父模塊之外的其他父模塊:
<parent>
<groupId>com.baeldung</groupId>
<artifactId>spring-boot-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>在這裏,我們使用了 父模塊、不同的項目作為父依賴。
現在,在這種情況下,我們仍然可以通過將其添加到 導入 範圍和 pom 類型中,獲得依賴管理相同的優勢。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>3.1.5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>此外,我們只需在 dependencies 中聲明任何依賴項,就像我們在之前的示例中做的那樣。這些依賴項不需要指定版本號。
8. 結論
在本文中,我們對 spring-boot-starter-parent 進行了概述,並介紹了將其作為子項目父項目的好處。
接下來,我們學習瞭如何管理依賴項。您可以在 dependencyManagement 中覆蓋依賴項,或通過屬性進行覆蓋。