Ich habe eine Maven pom.xml, ich baue ein Projekt und lasse ein Projekt mit Jenkins bereitstellen.
Aber vor und nach dem Build "Release Version" müssen wir meine Version einstellen
Zum Beispiel: Ich habe in pom.xml
<properties>
<version-own>0.0.21-SNAPSHOT</version-own>
</properties>
vor der Veröffentlichung muss ich so eingestellt werden
<properties>
<version-own>0.0.25</version-own>
</properties>
nach der Veröffentlichung muss ich so eingestellt werden
<properties>
<version-own>0.0.27-SNAPSHOT</version-own>
</properties>
Wie kann das gemacht werden?
Wenn Sie keine eigene Versionseigenschaft verwenden müssen, beachten Sie Folgendes, das für Ihr <project><version>0.0.21-SNAPSHOT</version></project>
-Element gilt:
mvn versions:set versions:commit -DnewVersion="0.0.25"
Das ändert Ihren Pom und passt die Version Ihren Wünschen an. Sie möchten diese Änderung wahrscheinlich in Ihrem Quellcode-Kontroll-Repository festschreiben. Dazu funktioniert das scm: checkin-Ziel von scm plugin einwandfrei (vorausgesetzt, Sie möchten, dass dies automatisiert wird):
mvn scm:checkin -Dincludes=pom.xml -Dmessage="Setting version, preping for release."
Dann können Sie Ihre Freigabe durchführen (ich empfehle das maven-release-plugin ), woraufhin Sie Ihre neue Version festlegen und wie oben festschreiben können.
Das versions Plugin ist dein Freund. Wenn Sie das obige Scripting durchführen, ist wahrscheinlich ein parametrisierter Build erforderlich, oder vorzugsweise das groovige Plugin für Jenkins, mit dem Sie die Maven-spezifischen Build-Variablen erhalten können.
Es gibt einen einfachen Weg dazu. Mit einem Befehl können Sie den gewünschten Teil ändern:
Zum Ausschneiden und Einfügen:
mvn build-helper:parse-version versions:set -DbuildNumber=555 '-DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}-${buildNumber}'
Zur Klarheit:
mvn build-helper:parse-version versions:set -DbuildNumber=555
'-DnewVersion=
${parsedVersion.majorVersion}
.${parsedVersion.minorVersion}
.${parsedVersion.incrementalVersion}
-${buildNumber}'
Dies ist ein kurzes Beispiel für das Aktualisieren von Versionen mit Buildwerten
Für den Anfang können Sie es von Hand tun. Wenn Ihr Build die Maven-Konventionen gut befolgt, könnten Sie wahrscheinlich eines von mehreren Maven-Plugins nutzen, die bei der Verwaltung von Versionsnummern helfen.
Das maven-versions-plugin hilft dabei, manuelle Änderungen an Versionsnummern zu automatisieren. Es verfügt über Nice CLI-Befehle, mit denen Sie Ihre Poms vor der Veröffentlichung optimieren können.
Dann gibt es noch das maven-release-plugin , das den gesamten Prozess des Ausschneidens eines Releases automatisiert. Der Snapshot wird in eine Release-Version geändert und anschließend auf den nächsten Snapshot nach dem Release-Build gerollt. Während dieses gesamten Prozesses werden diskrete Versionen der POMs zur Quellcodeverwaltung festgelegt.
Das Geheimnis für den Erfolg in den automatisierteren Teilen der Maven-Community ist wiederum, ob Ihr Build die Maven-Art macht oder nicht. Gehackte, stark optimierte, nicht konventionelle Builds haben normalerweise viele Hindernisse für eine erfolgreiche Verwendung des Release-Plugins.
Build-Helper-Plugin unterstützt Regex-Ersetzungen und kann bei Bedarf sogar Versionsnummern analysieren. . http://www.mojohaus.org/build-helper-maven-plugin/
Es gibt so etwas wie parsedVersion.nextIncrementalVersion
mvn build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} versions:commit
Betrachten Sie diesen Kommentar Sie beschreiben, dass Sie diese Version verwenden, um eine Abhängigkeit bereitzustellen. maven-release-plugin soll Ihnen helfen, die Versionen für Sie zu verwalten. Stellen Sie dieses Plugin also in Ihrer pom.xml bereit.
Erstellen Sie für den Schritt der manuellen Bereitstellung der Release- und Entwicklungsversion einen Job in Jenkins, der 2 String-Parameter hat:
entwicklungsversion
Veröffentlichungsversion
Fügen Sie den Build-Schritt "Maven-Ziele der obersten Ebene aufrufen" hinzu, um die Freigabe auszuführen (beispielsweise):
clean release:clean release:prepare release:perform -DdevelopmentVersion=${developmentVersion} -DreleaseVersion=${releaseVersion}
Beim Erstellen des Jobs werden Sie aufgefordert, sowohl die developmentVersion als auch die releaseVersion einzufügen.
Prost,
Despot