强烈建议使用支持依赖管理的构建系统,并且可以使用Maven中央仓库中已发布的构件,建议使用Maven或者Grade。当然也可以使用其他的工具(如Ant等),只不过其他的工具没有良好的支持。
13.1 依赖管理
每个版本的SpringBoot都有一个依赖的策划表,在实践中我们不需要自己提供或配置这些依赖的版本。当我们升级SpringBoot版本时,这些依赖的版本也会随之升级。
提示:如果需要,你还是可以使用自己定义的版本去覆盖SpringBoot建议的版本。
警告:每个版本的SpringBoot都有对应版本的Spring,强烈建议不要指定Spring的版本,避免出现问题。
13.2 Maven
Maven用户可以从spring-boot-starter-parent项目中继承默认的配置。父类工程提供了下面的内容:
- 默认的JDK版本时1.8。
- 默认编码是UTF-8.
- 依赖管理部分继承与spring-boot-dependencies pom,它管理着通用的依赖版本。这个依赖管理使我们在自己的pom里使用这些依赖可以忽略<version>标签的填写。
- 使用重打包ID来执行全局的重打包。
- 合理的资源过滤。
- 合理的插件配置(exec插件,git提交id以及shade等)。
- 合理的过滤application.properties、application.yml的特殊文件(如application-dev.properties、application-dev.yml等)。
由于application.properties、application.yml文件支持Spring风格的占位符(${...}),Maven的过滤器改为使用@...@占位符。可以重写resource.delimiter来重新配置Maven的属性。
继承父类启动器
想要继承spring-boot-starter-parent中的配置来设置自己的项目,方法如下:
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
</parent>
提示:你只需要在这个依赖中指定SpringBoot的版本号,如果添加其他的依赖,不需要指定版本号。
通过这个设置,你也可以定义自己需要的依赖版本来覆盖原来得配置。例如,想将SpringData升级到另一个版本,如下配置pom.xml:
<properties>
<spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>
</properties>
提示:可以在https://github.com/spring-projects/spring-boot/blob/v2.1.5.RELEASE/spring-boot-project/spring-boot-dependencies/pom.xml里查看支持的依赖列表。
不使用Parent POM
不是所有人都喜欢使用从spring-boot-starter-parent继承来的配置,可能你需要使用自己公司的父类依赖或者是你喜欢明确的指定所有依赖的版本号。
如果你不想使用,你可以通过设置scope=import,来使你得项目依然拥有依赖版本的管理,如下:
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
上边的示例不允许使用个人的配置来覆盖版本。如果想覆盖,需要在spring-boot-dependencies之前加上需要覆盖的依赖版本。例如,你想要升级SpringData的版本,如下编辑你得pom文件:
<dependencyManagement>
<dependencies>
<!-- Override Spring Data release train provided by Spring Boot -->
<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.1.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
提示:上边的示例制定了覆盖的依赖,可以使用相同的方法来覆盖你想覆盖的依赖版本。
使用SpringBoot Maven插件
SpringBoot包含一个可以将项目打包成可执行jar包的Maven插件,如果想使用这个插件,需要在<plugins>部分添加插件依赖,示例如下:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
提示:如果你使用了SpringBoot的父类starters配置,你只需要添加插件就好。如果不想改动父类starters的默认配置,对其无需更多的配置。
13.5 Starters
Starters是一组方便描述的依赖,你可以在项目中添加它们。你可以通过一站式商店来添加Spring相关的技术依赖,而不是通过重复的代码或是复制粘贴来添加。例如,你想使用Spring和JPA管理数据库,可以在项目中添加spring-boot-starter-data-jpa依赖。
Starters包含大量得可以让你的项目快速启动和运行的依赖项,并在移动项目时保证依赖的一致性和受支持。
名字代表什么?
所有正式的启动器有着一个命名规范:“spring-boot-starter-*”,“*”是应用的名称。名字的规范是为了帮助你更快的找到你要的启动器,许多IDE都支持Maven依赖的查找。例如,当你安装了Eclipse或STS插件,你可以在pom文件按ctrl-空格来根据名字搜寻需要的启动器。
如“创建个人启动器”部分所言,第三方启动器不应该以“spring-boot”开头,因为这个是Spring官方启动器的预留命名空间。第三方启动器的名字应该以第三方项目名开头,如名字为“third”的项目,应该命名为“third-spring-boot-starter”。
此处省略文档提供的starters的列表。
总目录:总纲 Spring Boot官方文档(2.1.5版翻译)
下一篇:14.构建代码