Как отобразить версию SVN в Maven с помощью плагина номера сборки

Как отобразить версию SVN и метку времени, используя плагин номер сборки.

В настоящее время у меня есть следующее

<plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>buildnumber-maven-plugin</artifactId>
            <configuration>
                <format>At {0,time} on {0,date} : SVN Revision {1,number}</format>
                <items>
                    <item>timestamp</item>
                    <item>buildNumber</item>
                </items>
                <doCheck>false</doCheck>
                <doUpdate>false</doUpdate>
            </configuration>
        </plugin>
    </plugins>

Который проявляется следующим образом: At 8:02:51 AM on Feb 2, 2011 : SVN Revision 1

Но моя версия SVN 1123. Если я закомментирую <format> а также <items> Я получаю правильный номер сборки SVN. Как мне отобразить оба?

Спасибо

4 ответа

Решение

Как сказано в документации, если вы используете специальный <item>buildNumber, он не использует SVN Revision, но вместо этого создает / читает специальный файл свойств.

Если вы хотите использовать SVN-ревизию, вам нужно следовать конфигурации, указанной в первом примере на странице использования. Другие примеры предназначены для иллюстрации использования, которое использует не ревизию SVN, а локальный номер сборки (как в случае сборок с непрерывной интеграцией).

Обновление до версии 1.2 buildnumber-maven-plugin и использовать scmVersion,

<items>
    <item>timestamp</item>
    <item>scmVersion</item>
</items>

Очень помог этот ответ SO.

Я в конечном итоге с помощью buildnumber-maven-plugin без параметра формата, чтобы получить svn ревизию, и дату, используя:

<properties>
    <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
    <build.date>${maven.build.timestamp}</build.date>
</properties>

затем в отфильтрованном ресурсе:

r${buildNumber}, ${build.date}

Имеет ли это значение?

"Плагин buildNumber обновит ваш локальный репозиторий. Это сделано потому, что 'svn info' извлекает ревизию из вашего локального репозитория и не обязательно совпадает с ревизией в удаленном репозитории. Вероятно, вы должны иметь дело с этими изменениями до того, как создание сборки в любом случае. Опять же, это поведение может быть подавлено с -Dmaven.buildNumber.doUpdate = false. "

http://mojo.codehaus.org/buildnumber-maven-plugin/usage.html

Другие вопросы по тегам