Реализованная версия недоступна в exec: java target - PullRequest
0 голосов
/ 20 декабря 2011

Я использовал это how2, чтобы добавить номер версии в наш продукт: http://www.christophkiehl.com/easy-way-to-display-your-apps-version-using-maven-and-manifest

, когда я сейчас строю банку с mvn assembly:single, я вижу правильную версию.Но когда я просто запускаю все с mvn exec:java, я получаю нулевое значение ...

что мне нужно сделать, чтобы App.class.getPackage().getImplementationVersion() не возвращало нулевое значение, когда я просто запускаю программу с не-jar?

1 Ответ

1 голос
/ 21 декабря 2011

Техника, которую вы использовали для добавления номера версии, работает только при сборке в виде баночки.

Другим способом достижения этого является наличие файла свойств, который обновляется с версией проекта во время сборки, которая, в свою очередь, читается вашим Java-кодом.

Скажем, у вас есть файл version.properties в src/main/resources, в котором есть запись

product.version=${project.version}

В том месте, где вы звоните App.class.getPackage().getImplementationVersion(), вы читаете это свойство и отображаете его содержимое.

Это будет работать как в кувшине, так и в кувшине.

Обновление: Вам необходимо обновить pom, чтобы включить фильтрацию ресурсов - по сути, добавьте фрагмент, как показано ниже (подробности см. this ).

<resources>
  <resource>
    <directory>${basedir}/src/main/resources</directory>
    <filtering>true</filtering>
  </resource>
</resources>
...