You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot Info Actuator无法返回实际项目版本,显示@project.version@问题求助

Spring Boot Info Actuator无法返回实际项目版本,显示@project.version@问题求助

我来帮你分析下这个问题哈,你遇到的情况是Spring Boot的Info Actuator没有正确替换@project.version@占位符,导致返回了原始字符串而不是实际的项目版本。下面是几个可能的原因和对应的解决办法:

  • Maven资源过滤未配置
    Spring Boot要替换application.properties里的Maven占位符,首先得确保Maven的资源过滤功能已经开启。你需要在pom.xml的<build>节点下添加资源过滤配置,让Maven在构建时处理application.properties文件,替换其中的占位符:

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
    

    这个配置会告诉Maven对src/main/resources目录下的文件进行过滤,把@...@格式的占位符替换成对应的Maven属性值。

  • 检查Maven构建命令
    要确保你是通过mvn clean package或者mvn clean install这类标准Maven命令来构建项目的。有些IDE直接点击运行按钮时,可能不会触发完整的Maven资源过滤流程,导致占位符没被替换。如果习惯用IDE运行,记得检查IDE的Maven配置是否开启了资源过滤。

  • 确认父POM的配置影响
    你的项目继承了my-app-parent父POM,需要检查父POM里有没有覆盖资源过滤的配置,比如是否设置了<filtering>false</filtering>。如果父POM禁用了资源过滤,子项目需要显式重新开启这个配置才能生效。

  • 检查Spring Boot Maven插件
    确保你的pom.xml中引入了Spring Boot的Maven插件,它是Spring Boot项目构建的核心组件,能协助完成占位符替换等关键步骤:

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    
  • 验证构建后的文件内容
    构建完成后,去项目的target/classes目录下打开application.properties文件,查看info.build.version的值是否已经被替换成了实际的版本号(比如你的父POM版本12.2.3-SNAPSHOT)。如果这里还是@project.version@,说明Maven的资源过滤没生效,重点排查前面的配置;如果已经替换成功,那可能是运行时使用了旧的资源文件,清理IDE缓存或者重新构建再运行试试。

总的来说,最常见的问题就是资源过滤未开启,先把这个配置加上,再用mvn clean package重新构建项目,应该就能解决这个问题啦。

备注:内容来源于stack exchange,提问作者lm.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 09:48:13