Используйте свойство maven "version" в коде java и nsis - PullRequest
1 голос
/ 27 сентября 2011

нам требуется номер версии программного обеспечения проекта maven как в коде Java, так и в сценарии установки NSIS.Следуя принципу СУХОЙ, номер версии должен храниться только в maven pom.Каков наилучший способ получить этот номер версии в коде Java, а также в сценарии NSIS?Обновления по номеру версии, разумеется, должны распространяться без заботы разработчика.

Текущий подход: везде, где нужен номер версии, $ {"versionNr"} вставляется в качестве замены.Затем на этапе сборки maven все исходные файлы java и NSIS фильтруются, а ключ заменяется номером версии.Чтобы избежать изменений в проверенном исходном коде, отфильтрованные файлы фактически копируются в другое место, не входящее в scm.Первоначальный источник и источник, отфильтрованный maven, вызывают много путаницы, которой я бы хотел избежать.

Есть подсказки?

Ответы [ 2 ]

5 голосов
/ 27 сентября 2011

Обычно я помещаю параметр версии (например, $ {project.version}) в файл свойств и применяю фильтрацию только к этому файлу в сборке maven. Как

app.version=${project.version}

Затем я использую этот файл свойств в коде, чтобы получить версию.

2 голосов
/ 27 сентября 2011

pom.properties становится встроенным в файл JAR (до META-INF/maven/<groupId>/<artifactId>/pom.properties), когда проект упакован. Это выглядит примерно так:

#Generated by Maven
#Mon Sep 26 09:03:19 EST 2011
version=1.0-SNAPSHOT
groupId=my.project.group.id
artifactId=my-artifactid

Вы можете прочитать это как ресурс в своем Java-коде и использовать Property API для считывания версии.

Не уверен, могут ли скрипты NSIS читать файлы свойств, но согласно исходному коду плагина NSIS он создает несколько определений! из ПОМ. Может быть, вы можете использовать это.

...