springboot的application.properties中获取pom.xml中的属性值
我们在打包的时候有个需求是要动态的更新application.properties中的一个配置属性值,如:
application.version=@project.version@
这里将属性的value配置为环境变量,目标为pom.xml中设置的版本号,这样我们就能在执行mvn package时自动将变量替换为真实值,保证我们在代码中能够实时获取到应用的版本号的变更,并且不需要每次打包都手动更改属性值,避免了有时候明明要更改却忘记更改的问题。
步骤
首先在src\main\resources\application.properties放置如下内容
application.version=@project.version@
在pom.xml中添加如下build配置
<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
最后执行mvn clean package打包命令,解压打包后的jar包,查看application.properties中的 application.version值,已经更新为当前的版本号。
这样我们就能够在Java代码逻辑中实时的读取到应用的版本号变更了。
注意
如果遇到${project.version}无法生效,是因为
由于 **${}** 方式会被maven处理。
如果你pom继承了spring-boot-starter-parent,Spring
Boot已经将maven-resources-plugins默认的${}方式改为了@@方式,如@name@
如果还想继续使用${}占位符方式,只需要在pom文件中加上下面配置即可:
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>utf-8</encoding>
<useDefaultDelimiters>true</useDefaultDelimiters>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>