13. 构建系统
强烈建议你选择一个支持依赖管理的构建系统,并且可以使用发布到“Maven中心”存储库的工件。我们建议你选择Maven或Gradle,可以让Spring Boot与其他构建系统(例如Ant)一起工作,但是它们并不是特别受支持。
13.1 依赖关系管理
Spring Boot的每一个版本都提供了它所支持的一个被整理的依赖项列表,实际上,在构建配置中,你不需要为这些依赖项提供一个版本,因为Spring Boot为你管理这些依赖项,当你升级Spring Boot本身时,这些依赖项也会以一致的方式升级。
如果需要,你仍然可以指定一个版本并覆盖Spring Boot的建议。
经过管理的列表包含所有spring模块,你可以使用spring Boot以及一个经过细化的第三方库列表,这个列表可以作为一个标准的材料清单(spring-boot-dependencies),它可以与Maven和Gradle一起使用。
Spring Boot的每个版本都与Spring框架的一个基本版本相关联,我们强烈建议你不要指定它的版本。
13.2 Maven
Maven用户可以从spring-boot-starter-parent项目继承来获得合理的默认值,父项目提供了以下特性:
Java 1.8作为默认的编译器级别
utf-8编码
依赖关系管理部分,继承自spring-boot-dependenciespom,管理通用依赖项的版本,这个依赖项管理允许你在自己的pom中使用这些依赖项时省略标记。
application.properties和指定属性的文件的application.yml(例如,application-dev.properties和application-dev.yml) 的合理资源过滤。
注意,由于application.properties和application.yml文件接受Spring样式的占位符(${…}),Maven过滤被更改为使用@..@占位符。(你可以通过设置一个名为resource.delimiter的Maven属性来覆盖它。)
13.2.1 继承启动器的父POM
要将你的项目配置为从spring-boot-starter-parent继承,请将parent设置为:
org.springframework.boot
spring-boot-starter-parent
2.0.5.RELEASE
你应该仅在此依赖项上指定Spring Boot版本号,如果你导入额外的启动器,你可以安全地省略版本号。
通过这种设置,你还可以通过在自己的项目中覆盖一个属性来覆盖单个依赖项。例如,要升级到另一个Spring Data release train,你需要将以下内容添加到你的pom.xml:
Fowler-SR2
13.2.2 使用没有父POM的Spring Boot
并不是每个人都喜欢从spring-booot-starter-parentPOM继承,你可能有你自己的企业标准父类,你需要使用它们,或者你可能倾向于显式地声明所有的Maven配置。
如果你不想使用spring-boot-starter-parent,那么你仍然可以使用scope=import依赖项来保持依赖管理