Maven-Buildnumber-Plugin SVN Редакция доступна только в том случае, если не использовать формат

StackOverflow https://stackoverflow.com/questions/4319248

Вопрос

При использовании Maven-BuildNumber-Plugin 1.0 Beta 4, похоже, что я могу получить ревизию SVN, если я не буду не использовать <format> Тег в конфигурации. Как только я использую <format> и <item>buildnumber</item> Тег, я получаю автоматическое увеличение номера, но он больше не соответствует ревизии SVN, и я не знаю, как вернуть его. Есть ли способ использовать номер ревизии SVN в пределах <format>? Документация не очень ясна.

Это было полезно?

Решение

Pustnnumber-Maven-плагин довольно Darn quirky, который, вероятно, почему это все еще бета. Формат предназначен только для тех предметов, которые вы хотите применить формат сообщения Java в большинстве случаев, и в большинстве случаев он полезен только со временными метками и буквальными строками. Если вам не нужен номер времени, не используйте опцию «Формат» при получении номера ревизии Subversion. Если вы используете формат, то как вы указали, он даст вам номер сборки, который всегда увеличивается на один, а не номер версии SCM.

Если вам нужен временный метр или у вас есть другие элементы, вытекающие из плагина Buildumber, а также ревизию Subversion, сделайте каждый как отдельные выполнения. Вот пример того, как получить номер редакции подзисона и временем сборки, используя два отдельных выполнения плагина:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>buildnumber-maven-plugin</artifactId>
    <version>1.0-beta-4</version>
    <executions>
        <execution>
            <id>generate-buildnumber</id>
                <phase>validate</phase>
            <goals>
                <goal>create</goal>
            </goals>
            <configuration>
                <useLastCommittedRevision>true</useLastCommittedRevision>
                <buildNumberPropertyName>buildRevision</buildNumberPropertyName>
            </configuration>
        </execution>
        <execution>
            <id>generate-timestamp</id>
            <phase>validate</phase>
            <goals>
                <goal>create</goal>
            </goals>
            <configuration>
                <format>{0,date,yyyy-MM-dd HH:mm:ss}</format>
                <items>
                    <item>timestamp</item>
                </items>
                <buildNumberPropertyName>buildDateTime</buildNumberPropertyName>
            </configuration>
        </execution>
    </executions>
</plugin>

Ключ для выполнения этой работы использует элемент BuildNumberPropertyName. Оформить заказ плагина использование Страница Для получения дополнительной информации о полезности формата Java является.

Другие советы

К внешности этого нет. Если вы используете конфигурацию формата, вы обязательно используете один из элементов по умолчанию.

От здесь:

Укажите сообщение, как указано Java.text.messageFormat. Это триггеры «предметы» конфигурации для чтения

А потом от здесь:

Укажите соответствующие элементы для сообщения формата, как указано Java.text.messageFormat. Специальные значения элемента являются «Timestamp» и «Buildnumber / D *».

Также, если вы посмотрите на код для MOJO здесь Пара вещей поддерживает это:

if ( format != null )
{
    if ( items == null )
    {
        throw new MojoExecutionException(
             " if you set a format, you must provide at least one item, "
             + "please check documentation " );
    }

И:

else
{
    // Check if the plugin has already run.
    revision = project.getProperties().getProperty(
        this.buildNumberPropertyName );
    if ( this.getRevisionOnlyOnce && revision != null)
    {
        getLog().debug( "Revision available from previous execution" );
        return;
    }

По звукам этого вы просите новую функцию (неплохой идею, кстати). Я бы отправил его как такое здесь.

Я столкнулся с такой же проблемой, и в течение нескольких мгновений я думал, что решение, предложенное @ Jean-Rémy Revy Works .. Но это не по какой-то причине.

Оказывается, в Buildnumber-Maven-Plugin-1.2 они добавили поддержку для специального свойства, называемого SCMVersion. На данный момент V1.2 не доступен в репозитории Maven, хотя веб-сайт плагина предлагает это GA. Таким образом, вам нужно будет оформить заказ источника (http://svn.codehaus.org/mojo/tags/buildnumber-maven-plugin-1.2/) и построить его ($ mvn install install). Это также установит плагин в вашем локальном репозитории.

После этого просто сделай это:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>buildnumber-maven-plugin</artifactId>
    <version>1.2</version>
    <executions>
        <execution>
                <phase>validate</phase>
            <goals>
                <goal>create</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <format>{0,date,yyyy-MM-dd HH:mm:ss}.{1}</format>
            <items>
                <item>timestamp</item>
                <item>scmVersion</item>
            </items>
        </configuration>

</plugin>

Существует убедительная причина, почему это было сделано разработчиком плагинов. Рекомендуемый способ получения метки сборки проекта следующим образом:

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

Таким образом, все, что вам нужно, это получить номер ревизии, который может быть очень хорошо проведен с одним вызовом плагина BuildNumber-Maven в соответствии с его документацией.

PS, имеющий одно исполнение вместо двух (как было предложено) экономит около одной секунды каждый раз, когда плагин вызывается;)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top