|
如需获取最新稳定版本,请使用 Spring Boot 4.0.4! |
使用插件
Maven 用户可以继承自 spring-boot-starter-parent 项目以获得合理的默认配置。
父项目提供以下功能:
-
Java 17 作为默认的编译器级别。
-
UTF-8 源文件编码。
-
使用
-parameters进行编译。 -
从
spring-boot-dependenciesPOM 继承的依赖管理部分,用于管理常用依赖的版本。 此依赖管理允许你在自己的 POM 中使用这些依赖时省略<version>标签。 -
使用
repackage执行 ID 执行repackage目标。 -
一个
native配置文件,用于配置构建以生成原生镜像。 -
合理的 资源过滤。
-
合理的插件配置(
Git Commit Id Plugin和 shade)。 -
对
application.properties和application.yml进行合理的资源过滤,包括特定于配置文件的文件(例如,application-dev.properties和application-dev.yml)
由于 application.properties 和 application.yml 文件接受 Spring 风格的占位符(${…}),Maven 过滤已更改为使用 @..@ 占位符。
(您可以通过设置名为 resource.delimiter 的 Maven 属性来覆盖此行为。) |
|
然后配置源选项和目标选项:
|
继承 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.5.12</version>
</parent>
| 你应该只需在此依赖项上指定Spring Boot的版本号。 如果你导入了其他starter,可以安全地省略版本号。 |
通过该设置,您还可以通过在自己的项目中覆盖属性来单独覆盖依赖项。
例如,要使用不同版本的 SLF4J 库和 Spring Data 发布列车,您需要将以下内容添加到您的 pom.xml 中:
<properties>
<slf4j.version>1.7.30</slf4j.version>
<spring-data-bom.version>2024.1.10</spring-data-bom.version>
</properties>
浏览 Spring Boot 参考文档中的 依赖版本属性 部分,以获取完整的依赖版本属性列表。
| 每个 Spring Boot 版本都是针对一组特定的第三方依赖项进行设计和测试的。 覆盖版本可能会导致兼容性问题,应谨慎操作。 |
不使用父 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.5.12</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-bom</artifactId>
<version>2024.1.10</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>3.5.12</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