对于最新的稳定版本,请使用 Spring Boot 3.4.0! |
使用插件
Maven 用户可以从spring-boot-starter-parent
project 来获得合理的默认值。
父项目提供以下功能:
-
Java 17 作为默认编译器级别。
-
UTF-8 源编码。
-
编译
-parameters
. -
依赖管理部分,继承自
spring-boot-dependencies
POM,用于管理常见依赖项的版本。 此依赖项管理允许您省略<version>
标记中。 -
执行
repackage
目标替换为repackage
执行 ID。 -
一个
native
配置文件,该配置文件将构建配置为能够生成本机映像。 -
合理的资源过滤。
-
合理的资源过滤
application.properties
和application.yml
包括特定于配置文件的文件(例如,application-dev.properties
和application-dev.yml
)
由于application.properties 和application.yml 文件接受 Spring 样式占位符 (${…} ),则 Maven 筛选将更改为使用@..@ 占位符。
(您可以通过设置一个名为resource.delimiter .) |
这
然后改为配置 source 和 target 选项:
|
继承 Starter 父 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.3.6</version>
</parent>
您应该只需要在此依赖项上指定 Spring Boot 版本号。 如果导入其他Starters,则可以安全地省略版本号。 |
通过该设置,您还可以通过覆盖自己项目中的属性来覆盖各个依赖项。
例如,要使用不同版本的 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
聚 甲醛。
您可能有自己的公司标准父级需要使用,或者您可能更愿意显式声明所有 Maven 配置。
如果您不想使用spring-boot-starter-parent
,您仍然可以通过使用import
scoped 依赖项,如下所示:
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>3.3.6</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
如上所述,前面的示例设置不允许使用 properties 覆盖各个依赖项。
要获得相同的结果,您需要在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.3.6</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