Maven-Buildnumber-Plugin SVN-Revision nur verfügbar, wenn nicht-Format
-
29-09-2019 - |
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.
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;)