Frage

Während der Maven-Buildnumber-Plugin 1.0 beta 4, so scheint es, dass ich die SVN Revision bekommen kann, wenn ich einen <format>-Tag in der Konfiguration verwenden. Sobald ich <format> und <item>buildnumber</item>-Tag verwenden, erhalte ich eine automatisch inkrementierende Zahl, aber es entspricht nicht mehr SVN Revision und ich weiß nicht, wie es zurück zu bekommen. Gibt es eine Möglichkeit, die SVN-Revisionsnummer in der <format> zu benutzen? Die Dokumentation ist nicht ganz klar.

War es hilfreich?

Lösung

Die Buildnumber-maven-plugin ist verflixt schrullig, was wahrscheinlich ist, warum es ist immer noch eine Beta. Das Format ist nur für die Elemente, die Sie wünschen, ein Java-Nachrichtenformat und in den meisten Fällen anzuwenden, ist es nur sinnvoll, mit Zeitstempel und Zeichenkette. Wenn Sie nicht brauchen, einen Zeitstempel nicht die Formatoption verwenden, wenn die Subversion-Revisionsnummer zu bekommen. Wenn Sie das Format verwenden, dann wie Sie angegeben haben, wird es geben Sie eine Build-Nummer, dass immer um eins erhöht, anstatt die SCM Versionsnummer.

Wenn Sie den Zeitstempel benötigen oder andere Artikel Ihre im Zusammenhang mit der Buildnumber-Plugin sowie die Subversion Revision, tun jeden als separate Ausführungen. Hier ist ein Beispiel dafür, wie die Subverison Revisionsnummer zu erhalten und den Build-Zeitstempel mit zwei getrennten Ausführungen des Plugins:

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

Der Schlüssel, um diese Arbeit zu machen, ist das buildNumberPropertyName Element verwendet. Kasse der Usage Seite für weitere Informationen über die Nützlichkeit der Java-Nachricht Format ist für.

Andere Tipps

Mit den Blicken von ihm nicht. Wenn Sie die Formatkonfiguration verwenden, dann sind Sie verpflichtet, eine der Standardelemente verwendet wird.

hier :

  

Geben Sie eine Nachricht wie angegeben durch   java.text.MessageFormat. Diese Trigger   "Artikel" Konfiguration zu lesen

Und dann von hier :

  

Geben Sie die entsprechenden Elemente für   das Format Nachricht, wie angegeben durch   java.text.MessageFormat. Sonderposten   Werte sind „Zeitstempel“ und   "Buildnumber / d *".

Auch wenn Sie auf den Code suchen die mojo hier ein paar Dinge, unterstützen dies:

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

Und:

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

Mit den Klängen der es Dich für ein neues Feature fragen (keine schlechte Idee, durch die Art und Weise). Ich möchte behaupten, sie als solche hier .

Ich habe in das gleiche Problem laufen und für ein paar Momente dachte ich die Lösung vorgeschlagen von @ Jean-Rémy Revy works..but es aus irgendeinem Grund nicht getan hat.

Es stellt sich heraus, dass in Buildnumber-maven-Plugin-1.2 haben sie Unterstützung für eine besondere Eigenschaft hinzugefügt genannt scmVersion. Ab sofort ist Version 1.2 nicht in der Maven-Repository zur Verfügung, obwohl die Website des Plugin schlägt es GA ist. So können Sie die Quelle (http://svn.codehaus.org/mojo/tags/buildnumber-maven-plugin-1.2/) und bauen sie zur Kasse müssen (MVN installieren $). Dies wird auch das Plugin in Ihrem lokalen Repository installieren.

Danach dies nur tun:

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

Es gibt einen zwingenden Grund, warum das von dem Plugin-Entwickler getan wurde. Eine empfohlene Methode des Projekts Build Zeitstempel zu erhalten, ist wie folgt:

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

Also alles, was Sie brauchen, ist eine Revisionsnummer zu erhalten, die sehr gut mit einem einzigen Aufruf des Buildnumber-Maven-Plugin entsprechend seine Dokumentation durchgeführt werden kann.

P. S. eine Ausführung anstelle von zwei Having (als angeboten wurde) spart in der Nähe von 1 Sekunde jedes Mal das Plugin aufgerufen wird;)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top