13.2、Maven
Maven 用户可以继承 spring-boot-starter-parent
项目以获取合适的默认值,父项目提供了以下功能:
- Java 1.8 作为默认编译器级别。
- 源代码使用 UTF-8 编码。
- 依赖管理部分继承自
spring-boot-dependencies
的 POM,允许您省略常见依赖的<version>
标签。 - 合理的资源过滤。
- 合适的插件配置(exec plugin、Git commit ID、shade)。
- 针对
application.properties
和application.yml
资源的合理过滤,包括特定 profile 的文件(例如application-foo.properties
和application-foo.yml
)
注意:由于 application.properties
和 application.yml
文件接受 Spring 风格的占位符(${...}
),因此 Maven 过滤改为使用 @..@
占位符(您可以使用 Maven 的 resource.delimiter
属性重写它)
13.2.1、继承 Starter Parent
要将项目配置继承 spring-boot-starter-parent
,只需要按以下方式设置 parent
:
<!-- 从 Spring Boot 继承默认配置 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
注意
您只需要在此依赖上指定 Spring Boot 的版本号。如果您要导入其它 starter,则可以放心地省略版本号。
通过该设置,您还可以重写自己项目中的配置属性来覆盖个别依赖。例如,要升级到另一个 Spring Data 发行版本,您需要将以下内容添加到 pom.xml
文件中。
<properties>
<spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>
</properties>
提示
查看
spring-boot-dependencies
pom 以获取受支持的属性清单。
13.2.2、不使用父 POM
不是每个人都喜欢从 spring-boot-starter-parent
继承 POM。您可能需要使用自己公司标准的父 POM,或者您可能只是希望明确地声明所有 Maven 配置。
如果您不想使用 spring-boot-starter-parent
,则仍然可以通过使用 scope=import
依赖来获得依赖管理(但不是插件管理)的好处:
<dependencyManagement>
<dependencies>
<dependency>
<!-- 从 Spring Boot 导入依赖管理 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
如上所述,上述示例设置不会让您使用属性来覆盖个别依赖。要达到相同的目的,需要在 spring-boot-dependencies
项之前在项目的 dependencyManagement
中添加一项。例如,要升级到另一个 Spring Data 发行版,您可以将以下元素添加到 pom.xml
中:
<dependencyManagement>
<dependencies>
<!-- 覆盖 Spring Boot 提供的 Spring Data -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Fowler-SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
注意
以上示例中,我们指定了一个 BOM,但是任何的依赖类型都可以用这个方法来重写。
13.2.3、使用 Spring Boot Maven 插件
Spring Boot 包括了一个 Maven 插件,它可以将项目打包成一个可执行 jar。如果要使用它,请将插件添加到您的 <plugins>
中:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
注意
如果您使用了 Spring Boot starter 的父 pom,则只需要添加插件。除非您要修改父级中定义的设置,否则不需要进行配置。