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.propertiesapplication.yml进行筛选包括特定profile(profile-specific)的文件,比如 applicationfoo.propertiesapplication-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.propertiesxx.xml的占位符的值,默认是替换${}里的值,具体的用法可参考Apache Maven Resources Plugin

results matching ""

    No results matching ""