Pregunta

Durante el uso de la maven-BuildNumber-plugin 1.0 beta 4, parece que puedo conseguir la revisión svn a menos que utilice una etiqueta <format> dentro de la configuración. Una vez que utilizo <format> y la etiqueta <item>buildnumber</item>, consigo un número de incremento automático, pero ya no corresponde a la revisión SVN y no sé cómo recuperarlo. ¿Hay una manera de utilizar el número de revisión SVN dentro del <format>? La documentación no está muy claro.

¿Fue útil?

Solución

El BuildNumber-maven-plugin es bastante maldito peculiar, que es probablemente por eso que es todavía una beta. El formato es sólo para aquellos artículos que desee aplicar un formato de mensaje de Java para y en la mayoría de los casos, sólo útiles con marcas de tiempo y las cadenas literales. Si usted no necesita una marca de tiempo no utilice la opción de formato al conseguir el número de revisiones Subversion. Si utiliza el formato, entonces, como usted ha indicado, se le dará un número de compilación que siempre se incrementa en uno más que el número de versión SMC.

Si usted no necesita la marca de tiempo o tienen otros artículos que su derivada desde el plugin BuildNumber, así como la revisión de Subversion, hacer cada uno como un ejecuciones separadas. Aquí está un ejemplo de cómo obtener el número Subverison revisión y la marca de tiempo de compilación usando dos ejecuciones independientes del plugin:

<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>

La clave para hacer este trabajo es utilizar el elemento buildNumberPropertyName. Pedido href="http://mojo.codehaus.org/buildnumber-maven-plugin/usage.html" rel="noreferrer"> página Uso

Otros consejos

Por lo que se ve no. Si utiliza la configuración de formato, entonces están obligados a utilizar uno de los elementos por defecto.

aquí :

  

Especifica un mensaje según lo especificado por   java.text.MessageFormat. Esto desencadena   "elementos" de configuración para ser leídos

Y luego desde aquí :

  

Especificar las partidas correspondientes a   el mensaje de formato, según lo especificado por   java.text.MessageFormat. partida especial   Los valores son "marca de tiempo" y   "BuildNumber / d *".

Además, si nos fijamos en el código para el mojo aquí un par de cosas apoyan esta:

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

Y:

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;
    }

Por los sonidos de la misma que está solicitando una nueva función (no es una mala idea por cierto). Yo diría que, como tal, aquí .

Me hizo correr en el mismo problema y por unos momentos pensé que la solución sugerida por @ Jean-Rémy Revy works..but no lo hizo por alguna razón.

Resulta que en BuildNumber-maven-plugin-1.2 se han añadido soporte para una propiedad especial llamada scmVersion. A partir de ahora la versión 1.2 no está disponible en el repositorio Maven aunque el sitio web del complemento sugiere que es GA. Por lo que tendrá a la caja de la fuente (http://svn.codehaus.org/mojo/tags/buildnumber-maven-plugin-1.2/) y construirlo ($ mvn install). Esto también instalar el plugin en su repositorio local.

Después de esto acaba de hacer esto:

<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>

Hay una razón de peso por la que se ha hecho por el desarrollador del plugin. Una forma recomendada de conseguir marca de tiempo de construcción del proyecto es el siguiente:

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

Así que todo lo que necesita es conseguir un número de revisión que se puede hacer bastante bien con una sola invocación de la BuildNumber-maven-plugin de acuerdo con su documentación.

P.S. Tener una ejecución en lugar de dos (como se ofreció) ahorra cerca de un segundo cada vez que se invoca el plugin;)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top