要想在yml或properties中使用@xxx@来引用pom.xml文件中通过profiles标签配置的参数,如application.yml中的@active@:
spring:
profiles:
active: @active@
pom.xml:
<profiles>
<profile>
<id>prod</id>
<properties>
<active>prod</active>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<active>test</active>
</properties>
</profile>
<profile>
<id>dev</id>
<properties>
<active>dev</active>
</properties>
</profile>
</profiles>
需要进行如下配置:
<resources>
<resource>
<directory>src/main/resources</directory>
<!--开启过滤,用指定的参数替换directory下的文件中的参数,如application.yml中的@active@-->
<filtering>true</filtering>
<includes>
<include>**/*.yml</include>
</includes>
</resource>
</resources>
配置完以后,确实可以获取到参数,但是!!!如果不是前后分离的项目,会发现项目图标不见了!这是因为配置在过滤文件进行参数替换时,把字体文件也给处理了。
因此,需要排除对其他文件的过滤,最终的配置是:
<!--build节点增加内容 解决在yml中使用@active@报错的bug(使用includes,不要使用excludes,后者似乎无效)-->
<resources>
<resource>
<directory>src/main/resources</directory>
<!--不开启过滤,即无需进行参数替换的文件-->
<filtering>false</filtering>
<includes>
<include>**/*.*</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<!--开启过滤,用指定的参数替换directory下的文件中的参数,如application.yml中的@active@-->
<filtering>true</filtering>
<includes>
<include>**/*.yml</include>
</includes>
</resource>
</resources>