使用外掛
Maven 使用者可以繼承 spring-boot-starter-parent
專案以獲取合理的預設設定。該父專案提供了以下特性:
-
預設編譯器級別為 Java 17。
-
UTF-8 原始碼編碼。
-
使用
-parameters
進行編譯。 -
繼承自
spring-boot-dependencies
POM 的依賴管理部分,用於管理常用依賴項的版本。此依賴管理允許您在自己的 POM 中使用這些依賴項時省略<version>
標籤。 -
執行帶有
repackage
執行 ID 的repackage
目標。 -
一個
native
配置檔案,用於配置構建以能夠生成 Native Image。 -
合理的資源過濾。
-
合理的外掛配置(Git commit ID 和 shade)。
-
對
application.properties
和application.yml
檔案進行合理的資源過濾,包括特定配置檔案的檔案(例如,application-dev.properties
和application-dev.yml
)
由於 application.properties 和 application.yml 檔案接受 Spring 風格的佔位符(${…} ),Maven 過濾已更改為使用 @..@ 佔位符。(您可以透過設定一個名為 resource.delimiter 的 Maven 屬性來覆蓋此設定。) |
然後改為配置 source 和 target 選項
|
繼承 Starter Parent 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.5</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 參考文件中的依賴版本屬性部分,以獲取完整的依賴版本屬性列表。
不使用 Parent POM 使用 Spring Boot
您可能出於某些原因不想繼承 spring-boot-starter-parent
POM。您可能需要使用自己的公司標準父 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.5</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.5</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