Spring如何配置文件动态读取pom.xml中的属性
作者:知楠行易
在项目开发中,经常需要将pom.xml中的属性动态传递给Spring配置文件,实现这一需求,可通过Maven的资源过滤功能,配置占位符替换,具体方法包括:在pom.xml中启用filtering,然后在Spring配置文件中通过${property}方式引用属性
Spring配置文件动态读取pom.xml属性
需求:
配置文件中的
spring.profiles.active=${env}需要打包时动态绑定。
方案
1.在pom.xml文件中配置启用占位符替换
<profiles>
<!-- 本地开发 -->
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- 其他环境 -->
</profiles>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>- Maven 中
<filtering>的默认值是false。 - 这意味着在复制资源文件时,Maven 不会对文件进行占位符替换(即过滤)。
2.在配置文件中配置 spring.profiles.active=@env@或者 spring.profiles.active=${env}
3.打包时选择环境 mvn clean package -Pprod
- -P 参数用于激活 Maven 构建中的特定配置文件(profile)
自定义占位符
如果担心冲突,那么可以自定义占位符。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<delimiters>
<delimiter>#{</delimiter>
<delimiter>}</delimiter>
</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>
</plugins>
</build>总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
