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>