У меня есть проект Java, использующий Spring Framework и Git, и я хотел отобразить номер сборки. Я нашел плагин Build Number Maven . Для Git номер сборки - это хеш Git. Мне это не нравится, и я думал, что свидание было намного более выразительным.
Я нашел эту отличную статью в блоге , в которой объясняется, как использовать плагин номера сборки с другим профилем для SVN и Git. Поскольку я просто использую Git, вместо того, чтобы создавать новый профиль, я просто скопировал часть плагина в свой тег сборки.
Когда я запускаю «mvn package», он говорит мне:
[INFO] --- buildnumber-maven-plugin:1.0:create (default) @ sherd ---
[INFO] Storing buildNumber: 2011-08-04_21-48_stivlo at timestamp: 1312487296631
Что выглядит нормально, но мне интересно, где это хранится? «git status» не обнаруживает никаких новых файлов, и кажется, что его нет и в target / (target / находится в моем .gitignore).
Может быть, мне изменить конфигурацию, чтобы сохранить номер сборки в файле? Как я могу использовать значение номера сборки?
Благодаря подсказке Майкла-О я прочитал главу о фильтрации файлов ресурсов в Руководстве по началу работы с Maven . Я создал файл application.properties в src / main / resources / properties / application.properties со следующим содержанием:
# application properties
application.name=${pom.name}
application.version=${pom.version}
application.build=${buildNumber}
Я добавил следующий фрагмент XML в свой раздел сборки:
src/main/resources/properties
true
Теперь, когда я звоню из в командной строке «mvn package», этот файл свойств сохраняется в target / classes / properties / application.properties, например, со следующим содержимым:
# application properties
application.name=Sherd Control Panel
application.version=1.0.1-SNAPSHOT
application.build=2011-08-05_05-55_stivlo
Все работает нормально из командной строки, но, вздох, m2eclipse выдает ошибки сборки:
05/08/11 6.05.03 CEST: Build errors for obliquid-cp;
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal
org.codehaus.mojo:buildnumber-maven-plugin:1.0:create (default) on project
sherd: Cannot get the branch information from the scm repository :
Exception while executing SCM command.
По какой-то причине m2eclipse пытается подключиться к моему репозиторию, но не может, потому что это репозиторий Git, доступ к которому осуществляется с помощью SSH и закрытого ключа. Интересно, могу ли я сказать m2eclipse, чтобы он не подключался к Git.
После дополнительных поисков я обнаружил параметр revisionOnScmFailure, установил для него значение true, и теперь m2eclipse также работает. Для справки, вот полная конфигурация плагина maven buildnumber, который я использовал (он находится в pom.xml в разделе build / plugins).
org.codehaus.mojo
buildnumber-maven-plugin
1.0
generate-resources
create
false
false
true
{0,date,yyyy-MM-dd_HH-mm}_{1}
- timestamp
- ${user.name}