У меня есть проект Java с использованием Spring Framework и Git, и я хотел отобразить номер сборки. Я обнаружил плагин Номер сборки 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 в свой раздел сборки:
<resources>
<resource>
<directory>src/main/resources/properties</directory>
<filtering>true</filtering>
</resource>
</resources>
Теперь, когда я вызываю из командной строки «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).
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
<revisionOnScmFailure>true</revisionOnScmFailure>
<format>{0,date,yyyy-MM-dd_HH-mm}_{1}</format>
<items>
<item>timestamp</item>
<item>${user.name}</item>
</items>
</configuration>
</plugin>