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

Quarkus/MicroProfile:如何通过Java代码读取pom.xml项目版本?

解决Quarkus中从pom.xml获取项目版本的问题

嘿,这个问题我之前也碰到过!你说的没错,直接在application.properties里写version=${quarkus.platform.version}确实拿不到pom里的属性——默认情况下Maven不会自动替换资源文件里的变量,而且Quarkus也不会主动把pom的所有属性暴露到应用配置中。给你几个靠谱的解决办法:

方案一:开启Maven资源过滤(适配你原来的思路)

这个方法是让Maven在构建时自动替换application.properties里的占位符,步骤很简单:

  1. 在pom.xml的<build>节点下配置资源过滤:
<build>
  <resources>
    <resource>
      <directory>src/main/resources</directory>
      <!-- 开启变量替换 -->
      <filtering>true</filtering>
    </resource>
  </resources>
</build>
  1. 在application.properties中指定要获取的pom属性:
# 如果要获取自己项目的版本,用${project.version}
version=${project.version}
# 如果要获取Quarkus平台版本,用${quarkus.platform.version}
# version=${quarkus.platform.version}
  1. 继续用你原来的代码注入即可:
@ConfigProperty(name = "version")
public String version;

方案二:直接通过Quarkus构建配置注入(无需application.properties中转)

Quarkus支持在构建时把pom属性直接映射为应用配置,这样不需要修改资源文件:

  1. 在pom.xml的quarkus-maven-plugin配置中添加构建属性:
<plugin>
  <groupId>io.quarkus</groupId>
  <artifactId>quarkus-maven-plugin</artifactId>
  <version>${quarkus.platform.version}</version>
  <extensions>true</extensions>
  <executions>
    <execution>
      <goals>
        <goal>build</goal>
        <goal>generate-code</goal>
        <goal>generate-code-tests</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <properties>
      <!-- 把pom的项目版本映射为Quarkus应用配置属性 -->
      <quarkus.application.version>${project.version}</quarkus.application.version>
    </properties>
  </configuration>
</plugin>
  1. 直接在代码中注入这个内置配置属性:
@ConfigProperty(name = "quarkus.application.version")
public String version;

方案三:直接获取Quarkus平台版本(无需额外配置)

如果你要的是Quarkus平台的版本(不是你自己项目的版本),其实Quarkus已经内置了这个属性,直接注入就行:

@ConfigProperty(name = "quarkus.platform.version")
public String quarkusPlatformVersion;

补充说明

为什么你原来的方法不行?因为默认情况下,Maven不会对src/main/resources下的文件进行变量替换,所以你写的version=${quarkus.platform.version}在构建后还是原字符串,Quarkus自然无法解析出正确的值。开启资源过滤或者通过Quarkus构建配置传递属性,就能解决这个问题啦。

内容的提问来源于stack exchange,提问作者tzou85

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:13:38