Springboot使用Maven占位符@替换不生效
我们都知道因为springboot自身也是用了${}占位符替换,所以spring-boot-starter-parent中定义
<resource.delimiter>@</resource.delimiter>
使用@符号作为占位符,防止和maven冲突。今天在bootstrap.yml也使用@符号替换maven变量却发现不生效,进入 spring-boot-starter-parent 才发现有如下配置,也就是说springboot除了定义@符号作为占位符之外,其实还限制了其替换范围!
所以为了增加对bootstrap.yml文件的支持,增加以下配置,注意资源要include和exclude成组,否则resources文件夹下其他文件不会被拷贝!
<resources>
<!-- springboot 默认只替换application*.[yml,yaml,properties]相关文件,我们项目中在bootstrap中需要替换配置中心等相关变量 -->
<resource>
<filtering>true</filtering>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>**/bootstrap*.yml</include>
<include>**/bootstrap*.yaml</include>
<include>**/bootstrap*.properties</include>
</includes>
</resource>
<!-- 必须成组否则文件夹下其他资源无法拷贝 -->
<resource>
<directory>${basedir}/src/main/resources</directory>
<excludes>
<exclude>**/bootstrap*.yml</exclude>
<exclude>**/bootstrap*.yaml</exclude>
<exclude>**/bootstrap*.properties</exclude>
</excludes>
</resource>
</resources>
