spring-boot maven项目不自动替换profile占位符
- 场景:
application*.yml 文件不配置可正常替换profile占位符,增加bootstarp.yml且在bootstrap.yml 中配置spring.profiles.active后,编译后的bootstrap.yml占位符不自动替换, 还是 @xxx@
- 原因:
项目继承自 spring-boot-starter-parent, pom默认配置了resource及占位符替换, 只配置了application*.yml
<!-- spring-boot-starter-parent中的默认配置 -->
<resource>
<filtering>true</filtering>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>**/application*.yml</include>
<include>**/application*.yaml</include>
<include>**/application*.properties</include>
</includes>
</resource>
如果要适用bootstrap.yml,在需要pom中添加
<!-- 模块pom中添加 -->
<resource>
<filtering>true</filtering>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>**/application*.yml</include>
<include>**/bootstrap*.yml</include>
</includes>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
<excludes>
<exclude>**/application*.yml</exclude>
<exclude>**/bootstrap*.yml</exclude>
</excludes>
</resource>
注: spring-boot-starter-parent定义了占位符为 @, 普通 ${xxx}打包时不会替换,只替换 @xxx@
<resource.delimiter>@</resource.delimiter>