13.2. Maven
使用Maven构建Spring Boot应用时,项目的POM文件可以继承spring-boot-starter-parent
项目(就是继承该项目的POM文件)来获取合适的默认设置。该parent
有一下默认特性:
- 默认编译级别为Java 1.6
- 源码编码为UTF-8
- 引入了
dependencyManagement
节点(什么是dependencyManagement),具体说就是如果你需要在自己的POM文件中引入一些spring-boot其他模块,或者某些第三方依赖(如junit)的话,你不需要指定<version>
,会自动从dependencyManagement
节点继承,具体可以查看spring-boot-starter-parent
项目的POM文件 - 恰到好处的资源过滤
- 恰到好处的插件配置(exec插件,surefire,Git commit ID,shade)
- 恰到好处的对
application.properties
和application.yml
进行筛选包括特定profile
(profile-specific)的文件,比如applicationfoo.properties
和application-foo.yml
最后一点:由于配置文件(如applciation.properties
)接受Spring风格的占位符(${...}),如在applciation.properties
中:
app.name=test-app
# ${app.name}引用app.name的值
app.description=${app.name} is a test app
# server.port会被--port替代,默认值为8080
server.port=${port:8080}
在启动Spring Boot时使用--port
就换将${port:8080}
占位符替代为9090
java -jar xxx.jar --port=9090
为了防止与Maven filter的功能相冲突,只要继承了parent
就会将Maven filter的占位符转变为@..@
,可以在自己项目的POM文件中的<properties/>
里设置<resource.delimiter/>
属性来覆盖它(示例做法可参看博客spring boot通过maven filter替换properties属性(多环境配置))
Maven filter 是用来在多环境构建项目时,用来替换项目资源配置文件中如
xx.properties
或xx.xml
的占位符的值,默认是替换${}
里的值,具体的用法可参考Apache Maven Resources Plugin