Подтвердить что ты не робот

Плагин Maven build number, как сохранить номер сборки в файле?

У меня есть проект Java с использованием Spring Framework и Git, и мне нужно отобразить номер сборки. Я нашел Build Number Maven plugin. С 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" не обнаруживает никакого нового файла и кажется, что он не находится в целевом/слишком (цель/находится в моем .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>
4b9b3361

Ответ 1

Сохраните его в отфильтрованном файле свойств.

Ответ 2

Вы не должны устанавливать revisionOnScmFailure вариант true, он не ожидает логического. Установите его в строку ревизии, которую вы хотите использовать, когда SCM недоступен, например na или тому подобное. Это не имеет значения для вашего случая, поскольку вы переопределяете формат номера сборки, но это было бы более правильным.

См. buildnumber-maven-plugin docs.

Ответ 3

Я не смог воспроизвести проблему, о которой сообщает OP. В моем случае как командная строка, так и m2eclipse работают нормально, и файл создается корректно в папке target/classes. Ответ, предоставленный @KasunBG, неверен. Файл buildNumber.properties создается только в том случае, если вы используете следующее:

        <format>{0,number}</format>
        <items>
            <item>buildNumber</item>
        </items>

buildNumber.properties используется для хранения числа, которое может быть увеличено. По этой причине (я думаю) плагин не генерирует этот файл, если вы используете timestamp/scmVersion и т.д.

Ответ 4

На странице documentation указано, что файлы свойств хранятся в ${basedir}/buildNumber.properties, который создается при выполнении фазы buildnumber:create.