使用插件
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