搞了一上午,之前项目中使用profile多环境配置完全没问题,但新项目死活不行。最后分析发现是因为引入spring-boot导致无法替换变量,然后又继续研究原因。
spring-boot引用方式官方推荐是使用:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.6.RELEASE</version>
</parent>
然后去看了一下对应的pom.xml文件,发现spring-boot为了保护application.yml和application.properties,修改了默认的占位符${...}为@...@,然后发现resources插件有一个配置项:
<useDefaultDelimiters>true</useDefaultDelimiters>
会使用默认的占位符,增加此配置项后就没问题了。
resource插件完整的配置:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>utf-8</encoding>
<useDefaultDelimiters>true</useDefaultDelimiters>
</configuration>
</plugin>
这个问题说起来就几句话,但profile多环境配置没有生效的时候真是一头雾水。