有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何访问maven。建筑Quarkus中用于资源筛选的时间戳

访问应用程序的版本和名称可以正常工作。但我还想使用maven访问Quarkus应用程序的构建日期/时间。我知道,已经有这方面的帖子了,但我不能让它为Quarkus工作

我有一份申请。属性文件包含:

# info properties
quarkus.application.version=1.0
quarkus.application.timestamp=${maven.build.timestamp}

在波姆。xml,资源筛选已激活:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>${version.resources-plugin}</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>process-resources</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${basedir}/target/classes/META-INF/resources/</outputDirectory>
                <resources>
                    <resource>
                        <directory>name-frontend/dist/name-frontend</directory>
                        <filtering>true</filtering>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

在Java中,通过以下方式访问它:

@ConfigProperty(name = "quarkus.application.version") // <--- works
String version;
@ConfigProperty(name = "quarkus.application.name") // <--- works
String name;
@ConfigProperty(name = "quarkus.application.timestamp") // <--- what to use here?
String buildDate;

错误:

Caused by: java.lang.RuntimeException: Failed to start quarkus
Caused by: java.util.NoSuchElementException: SRCFG00011: Could not expand value maven.build.timestamp in property quarkus.application.timestamp

离开申请。没有${maven.build.timestamp}的属性文件确实允许构建继续进行,但当然没有构建时间


共 (1) 个答案

  1. # 1 楼答案

    你可能想使用Maven的Resource Filtering

    您可以删除添加的maven-resources-plugin,只需使用以下配置Maven:

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

    然后quarkus.application.timestamp=${maven.build.timestamp}中的application.properties将在执行生成时自动替换