Как получить доступ к maven.build.timestamp для фильтрации ресурсов в Quarkus

Доступ к версии и названию приложения работает нормально. Но я также хочу получить доступ к дате / времени сборки приложения Quarkus с помощью maven. Я знаю, что для этого уже есть сообщение, но я не могу заставить его работать на Quarkus.

У меня есть файл application.properties с:

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

В pom.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

Если оставить файл application.properties без ${maven.build.timestamp}, сборка будет продолжена, но, конечно же, времени сборки просто нет.


person XHotSniperX    schedule 20.03.2021    source источник


Ответы (1)


Вероятно, вы захотите использовать фильтрацию ресурсов Maven.

Вы должны удалить добавленный 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 будет автоматически заменен при выполнении сборки.

person geoand    schedule 21.03.2021
comment
Спасибо, но это не работает. Я получаю то же сообщение об ошибке, что и в моем вопросе. - person XHotSniperX; 22.03.2021
comment
См .: stackoverflow.com/a/13228882/2504224 - person geoand; 22.03.2021
comment
Я попробовал это в связанном сообщении, и это привело к тому же сообщению об ошибке. Я добавил запись к свойствам в pom.xml и изменил application.properties на «quarkus.application.timestamp = $ {timestamp} ». Если вы хотите воспроизвести сообщение об ошибке, просто проверьте проект Quarkus по началу работы и попробуйте добавить метку времени сборки в файл свойств. - person XHotSniperX; 22.03.2021
comment
Есть другие предложения? Вы пробовали воспроизвести? - person XHotSniperX; 24.03.2021
comment
Я еще не пробовал - person geoand; 24.03.2021