文章目录
  1. 1. 步骤
  2. 2. 注意

我们在打包的时候有个需求是要动态的更新application.properties中的一个配置属性值,如:

application.version=@project.version@

这里将属性的value配置为环境变量,目标为pom.xml中设置的版本号,这样我们就能在执行mvn package时自动将变量替换为真实值,保证我们在代码中能够实时获取到应用的版本号的变更,并且不需要每次打包都手动更改属性值,避免了有时候明明要更改却忘记更改的问题。

步骤

  1. 首先在src\main\resources\application.properties放置如下内容

    application.version=@project.version@
    
  2. 在pom.xml中添加如下build配置

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
    
  3. 最后执行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>

参考资料 springboot无法完成变量从pom到.properties文件自动替换的问题

文章目录
  1. 1. 步骤
  2. 2. 注意
Fork me on GitHub