此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.3.1

此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.3.1

Maven 用户可以从项目继承来获取合理的默认值。 父项目提供以下功能:spring-boot-starter-parent

  • Java 17 作为默认编译器级别。

  • UTF-8 源代码编码。

  • 使用 .-parameters

  • 从 POM 继承的依赖项管理部分,用于管理常见依赖项的版本。 通过此依赖项管理,您可以在自己的 POM 中使用这些依赖项时省略这些依赖项的标记。spring-boot-dependencies<version>

  • 使用执行 ID 执行重新打包目标repackage

  • 将生成配置为能够生成本机映像的配置文件。native

  • 合理的资源过滤

  • 合理的插件配置(Git 提交 ID阴影)。

  • 对特定于配置文件的文件进行合理的资源筛选(例如,和application.propertiesapplication.ymlapplication-dev.propertiesapplication-dev.yml)

由于 和 文件接受 Spring 样式的占位符 (),因此 Maven 筛选更改为使用占位符。 (您可以通过设置名为 的 Maven 属性来覆盖它。application.propertiesapplication.yml${…​}@..@resource.delimiter

该属性设置属性,该属性在修改系统模块时限制 、 和 选项。 如果您需要使用这些选项,请取消设置:spring-boot-starter-parentmaven.compiler.release--add-exports--add-reads--patch-modulemaven.compiler.release

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

,然后配置源和目标选项:

<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
由于 和 文件接受 Spring 样式的占位符 (),因此 Maven 筛选更改为使用占位符。 (您可以通过设置名为 的 Maven 属性来覆盖它。application.propertiesapplication.yml${…​}@..@resource.delimiter

该属性设置属性,该属性在修改系统模块时限制 、 和 选项。 如果您需要使用这些选项,请取消设置:spring-boot-starter-parentmaven.compiler.release--add-exports--add-reads--patch-modulemaven.compiler.release

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

,然后配置源和目标选项:

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

继承入门父 POM

要将项目配置为继承自 ,请按如下方式设置:spring-boot-starter-parentparent

<!-- Inherit defaults from Spring Boot -->
<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>3.3.2-SNAPSHOT</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 参考中的“依赖项版本属性”部分,获取依赖项版本属性的完整列表。

您应该只需要在此依赖项上指定 Spring Boot 版本号。 如果导入其他启动器,则可以安全地省略版本号。

在没有父 POM 的情况下使用 Spring Boot

您可能出于某种原因不继承 POM。 您可能有自己的企业标准父级需要使用,或者您可能更愿意显式声明所有 Maven 配置。spring-boot-starter-parent

如果您不想使用 ,您仍然可以通过使用作用域依赖项来保留依赖项管理(但不保留插件管理)的好处,如下所示:spring-boot-starter-parentimport

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

如上所述,前面的示例设置不允许使用属性重写单个依赖项。 要获得相同的结果,您需要在条目之前在项目部分中添加条目。 例如,要使用不同版本的 SLF4J 库和 Spring Data 发布系列,您可以将以下元素添加到您的 :dependencyManagementspring-boot-dependenciespom.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.2-SNAPSHOT</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>

上述操作确保默认启用。 现在已经公开了一个专用属性,也可以在命令行上覆盖它:localdev

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