69.1.1. 使用Maven自动暴露属性
你可以使用Maven的资源过滤(resource filter)自动暴露来自Maven项目的属性,如果使用spring-boot-starter-parent
,你可以通过@..@
占位符引用Maven项目的属性,例如:
app.encoding=@project.build.sourceEncoding@
app.java.version=@java.version@
注 如果启用addResources
标识,spring-boot:run
可以将src/main/resources
直接添加到classpath(出于热加载目的),这就绕过了资源过滤和本特性。你可以使用exec:java
目标进行替代,或自定义该插件的配置,具体查看插件使用页面。
如果不使用starter parent,你需要将以下片段添加到pom.xml
中(<build/>
元素内):
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
和(<plugins/>
元素内):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<configuration>
<delimiters>
<delimiter>@</delimiter>
</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>
注 如果你在配置中使用标准的Spring占位符(比如${foo}
)且没有将useDefaultDelimiters
属性设置为false
,那构建时这些属性将被暴露出去。