此版本仍在开发中,尚未视为稳定版。如需最新稳定版本,请使用 Spring Boot 4.0.4spring-doc.cadn.net.cn

使用插件

Maven 用户可以继承 spring-boot-starter-parent 项目以获得合理的默认配置。 该父项目提供以下功能:spring-doc.cadn.net.cn

由于 application.propertiesapplication.yml 文件接受 Spring 风格的占位符(${…​}),因此 Maven 过滤被更改为使用 @..@ 占位符。 (你可以通过设置一个名为 resource.delimiter 的 Maven 属性来覆盖该行为。)

spring-boot-starter-parent 设置了 maven.compiler.release 属性,该属性会限制 --add-exports--add-reads--patch-module 选项(如果它们修改系统模块)。 如果你需要使用这些选项,请取消设置 maven.compiler.releasespring-doc.cadn.net.cn

<maven.compiler.release></maven.compiler.release>

然后改为配置源选项和目标选项:spring-doc.cadn.net.cn

<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>

继承 Starter 父 POM

要将您的项目配置为继承自 spring-boot-starter-parent,请按如下方式设置 parentspring-doc.cadn.net.cn

<!-- Inherit defaults from Spring Boot -->
<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>4.1.0-M3</version>
</parent>
您只需在此依赖项中指定 Spring Boot 的版本号即可。 如果您导入了其他 starter,可以安全地省略版本号。

完成上述配置后,你还可以通过在自己的项目中覆盖某个属性来单独替换特定的依赖项。 例如,若要使用不同版本的 SLF4J 库和 Spring Data 发布版系列,你可以在 pom.xml 中添加以下内容:spring-doc.cadn.net.cn

<properties>
	<slf4j.version>1.7.30</slf4j.version>
	<spring-data-bom.version>2024.1.10</spring-data-bom.version>
</properties>

在 Spring Boot 参考文档中浏览依赖版本属性部分,以获取完整的依赖版本属性列表。spring-doc.cadn.net.cn

每个 Spring Boot 版本都是针对一组特定的第三方依赖进行设计和测试的。 覆盖版本可能会导致兼容性问题,应谨慎操作。

不使用父 POM 使用 Spring Boot

你可能有理由不继承 spring-boot-starter-parent POM。 你可能已有自己的公司标准父 POM 必须使用,或者你可能更倾向于显式声明所有的 Maven 配置。spring-doc.cadn.net.cn

如果你不想使用 spring-boot-starter-parent,仍然可以通过使用作用域为 import 的依赖项来保留依赖管理的好处(但不包括插件管理),如下所示:spring-doc.cadn.net.cn

<dependencyManagement>
	<dependencies>
		<dependency>
			<!-- Import dependency management from Spring Boot -->
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-dependencies</artifactId>
			<version>4.1.0-M3</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

如上所述,前述示例配置不允许您通过使用属性来覆盖单个依赖项。 要实现相同的效果,您需要在项目 dependencyManagement 部分中、spring-boot-dependencies 条目之前添加相应条目。 例如,若要使用不同版本的 SLF4J 库和 Spring Data 发布系列,您可以在 pom.xml 中添加以下元素:spring-doc.cadn.net.cn

<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>4.1.0-M3</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

在命令行上覆盖设置

该插件提供了一系列以 spring-boot 开头的用户属性,允许您从命令行自定义配置。spring-doc.cadn.net.cn

例如,您可以调整配置文件,以在运行应用程序时启用如下设置:spring-doc.cadn.net.cn

$ mvn spring-boot:run -Dspring-boot.run.profiles=dev,local

如果你既想设置一个默认值,又允许通过命令行覆盖它,就应该结合使用用户提供的项目属性和 MOJO 配置。spring-doc.cadn.net.cn

<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>

上述配置确保 localdev 默认启用。 现在已暴露一个专用属性,也可以通过命令行进行覆盖:spring-doc.cadn.net.cn

$ mvn spring-boot:run -Dapp.profiles=test