У меня есть приложение Java 11, которое я разрабатываю с использованием Maven, и в pom.xml у меня объявлена версия.
<groupId>my.group.id</groupId>
<artifactId>artifact</artifactId>
<version>0.1.2.3</version>
Я хочу получить эту версию во время выполнения, например, используя getClass().getPackage().getImplementationVersion()
, так какописанный в этот вопрос . Это работает до тех пор, пока я не упаковываю свое приложение как модульный образ времени выполнения с использованием Jlink. Тогда я получаю только null
, возвращенный из вышеупомянутого вызова.
Я упаковываю свое приложение, используя:
jlink --output target/artifact-image --module-path target/dependencies --launcher MyApp=my.module.name/my.main.Class --add-modules my.module.name
На самом деле Jlink имеет параметр --version
, но вместо этого возвращается версия Jlink, устанавливающая егодля сгенерированного артефакта.
Итак, как я могу получить версию (моего проекта Maven) во время выполнения?
- Как определить ее в модульномПриложение?
- Как получить его в модульном приложении?
- Как прочитать его в модульном приложении?
Я знаю, что могу определить его в ресурсефайл и просто прочитайте его оттуда, однако я предпочитаю иметь его только в pom.xml
(= иметь единственный источник правды).