Как я могу получить версию приложения (определенную версией тега в pom.xml) специально в quarkus?

Я перешел с простого приложения Java EE на quarkus.io. В Java EE у меня был файл свойств с version=${project.version}, и я перечитывал этот файл в конечной точке JAX RS. Это сработало очень хорошо.

@GET
public Response getVersion() throws IOException {
    InputStream in = getClass().getClassLoader().getResourceAsStream("buildInfo.properties");
    if (in == null) {
        return Response.noContent().build();
    }
    Properties props = new Properties();
    props.load(in);
    JsonObjectBuilder propertiesBuilder = Json.createObjectBuilder();
    props.forEach((key, value) -> propertiesBuilder.add(key.toString(), value.toString()));
    return Response.ok(propertiesBuilder.build()).build();
}

Теперь, когда я использую quarkus и MicroProfile, мне интересно, есть ли лучший подход.

Я попробовал это с настройкой ConfigProperty из MicroProfile.

@ConfigProperty(name = "version")
public String version;

Но я получаю следующую ошибку:

Property project.version not found.

Вот мой раздел сборки моего файла pom.

<build>
    <finalName>quarkus</finalName>
    <plugins>
        <plugin>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-maven-plugin</artifactId>
            <version>1.0.0.CR2</version>
            <executions>
                <execution>
                    <goals>
                        <goal>build</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${surefire-plugin.version}</version>
            <configuration>
                <systemProperties>
                    <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
                </systemProperties>
            </configuration>
        </plugin>
    </plugins>
</build>

Есть ли какое-нибудь решение / лучший подход?


person alexander    schedule 09.10.2019    source источник


Ответы (2)


Пытаться


@ConfigProperty(name = "quarkus.application.version")
String version;

Также вы можете прочитать версию реализации из манифеста.

person anamarija    schedule 22.11.2019
comment
Привет @anamarija, я пробовала. @ConfigProperty(name ="quarkus.application.version") String quarkusVersion;. Выдает ошибку: No config value of type [java.lang.String] exists for: quarkus.application.version. Извините, я должен был включить это в свой вопрос! - person alexander; 22.11.2019
comment
Не могли бы вы опубликовать свой pom.xml. Используете ли вы quarkus-maven-plugin? В основном плагин quarkus build maven принимает значение project.version и помещает его в quarkus.application.version, если оно еще не установлено. - person anamarija; 22.11.2019
comment
Я включил секцию сборки. - person alexander; 28.11.2019
comment
Вам удалось заставить это работать? У меня такая же проблема в версии 1.0.1-Final. Я также пытался установить версию через Maven, например, в application.properties: quarkus.application.version = $ {project.version} Но это тоже не сработало. - person Serkan; 17.12.2019
comment
Нет, я не. Может, нам стоит пинговать ребята из кваркуса. - person alexander; 18.12.2019
comment
Произошла ошибка: github.com/quarkusio/quarkus/issues/6255 - person alexander; 22.01.2020

Я не уверен, что мой подход - лучший сценарий, но вы можете попробовать следующее:

pom.xml:

<resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <includes>
                <include>**/application.properties</include>
            </includes>
        </resource>
   </resources>

В application.properties используйте свойство версии:

quarkus.version=${quarkus.platform.version}

Затем используйте его как свойство конфигурации:

@ConfigProperty(name = "quarkus.version")
String version;
person Spiros batzio    schedule 18.12.2019