Domanda

Durante l'utilizzo Maven-BuildNumber-plugin 1.0 beta 4, sembra che posso ottenere la revisione svn a meno che io uso un tag <format> all'interno della configurazione. Una volta che io uso <format> e tag <item>buildnumber</item>, ottengo un numero di incremento automatico, ma corrisponde più a revisione svn e non so come ottenerlo indietro. C'è un modo per utilizzare il numero di revisione svn all'interno della <format>? La documentazione non è molto chiaro.

È stato utile?

Soluzione

Il BuildNumber-Maven-plugin è maledettamente eccentrico, che è probabilmente il motivo per cui è ancora una versione beta. Il formato è solo per le voci che si desidera applicare un formato di messaggio Java per e nella maggior parte dei casi, solo utili con timestamp e le stringhe letterali. Se non avete bisogno di un timestamp non utilizzare l'opzione di formattazione quando ottiene il numero di Subversion di revisione. Se si utilizza il formato, poi, come da te indicato, ti do un numero di build che sempre incrementa di uno piuttosto che il numero di versione SCM.

Se si ha bisogno il timestamp o hanno altri oggetti vostra derivanti dal plugin BuildNumber così come la revisione di Subversion, fare ogni uno come esecuzioni separate. Ecco un esempio di come ottenere il numero Subverison di revisione e il timestamp costruito utilizzando due esecuzioni distinte 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 chiave per fare questo lavoro sta utilizzando l'elemento buildNumberPropertyName. Acquista pagina Uso del plugin per ulteriori informazioni circa l'utilità del messaggio Java formato è per.

Altri suggerimenti

Con gli sguardi di esso non. Se si utilizza la configurazione formato di allora si sono tenuti a utilizzare una delle voci di default.

qui :

  

Specificare un messaggio come specificato da   java.text.MessageFormat. Questo innesca   "voci" di configurazione che devono essere letti

E poi da qui :

  

Specificare le voci corrispondenti per   il messaggio formato, come specificato da   java.text.MessageFormat. articolo speciale   I valori sono "timestamp" e   "Numero build / d *".

Anche se si guarda il codice per il mojo qui un paio di cose supportano questa:

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

E

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

Con i suoni di esso si sta chiedendo una nuova funzionalità (non è una cattiva idea a proposito). Vorrei far presente come tale qui .

ho incontrato lo stesso problema e per qualche istante ho pensato che la soluzione suggerita da @ Jean-Rémy Revy works..but non ha fatto per qualche motivo.

Si scopre che in BuildNumber-maven-plugin-1.2 hanno aggiunto il supporto per una proprietà speciale chiamato scmVersion. A partire da ora, non v1.2 è disponibile nel repository Maven se il sito del plugin suggerisce che è GA. Quindi sarà necessario alla cassa la fonte (http://svn.codehaus.org/mojo/tags/buildnumber-maven-plugin-1.2/) e costruirlo ($ MVN installazione). Questo sarà anche installare il plugin nel repository locale.

Dopo questo basta fare questo:

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

C'è un motivo valido per cui che è stato fatto dallo sviluppatore del plugin. Un metodo consigliato per ottenere costruire timestamp del progetto è la seguente:

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

Quindi, tutto ciò che serve è quello di ottenere un numero di revisione che può essere fatto abbastanza bene con una sola invocazione del BuildNumber-Maven-plug in base alla sua documentazione.

P.S. Avere un'esecuzione invece di due (come è stato offerto) salva nei pressi di un secondo ogni volta che il plugin è invocato;)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top