У меня есть проект Java с использованием Spring Framework и Git, и мне нужно отобразить номер сборки. Я нашел Build Number Maven plugin. С 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" не обнаруживает никакого нового файла и кажется, что он не находится в целевом/слишком (цель/находится в моем .gitignore).
Возможно, мне нужно изменить конфигурацию, чтобы сохранить номер сборки в файле? Как я могу использовать значение номера сборки?
Благодаря намеку на Майкла-О, я прочитал главу о как фильтровать файлы ресурсов в Руководстве Maven Getting Started Guide. Я создал файл 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. Для справки, вот полная конфигурация плагина buildnumber maven, который я использовал (он находится в 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>