web-dev-qa-db-ja.com

Maven:pom.xmlのバージョンプロパティを変更する

Maven pom.xmlがあり、プロジェクトをビルドし、Jenkinsでプロジェクトをリリースします。

ただし、「リリースバージョン」をビルドする前後に、バージョンを設定する必要があります。

例:pom.xmlにあります

<properties>
   <version-own>0.0.21-SNAPSHOT</version-own>
</properties>

リリース前にこのように設定する必要があります

<properties>
   <version-own>0.0.25</version-own>
</properties>

リリース後、私はこのように設定する必要があります

<properties>
   <version-own>0.0.27-SNAPSHOT</version-own>
</properties>

これをどのように行うことができますか?

17
user2004266

独自のバージョンプロパティを使用する必要がない場合は、<project><version>0.0.21-SNAPSHOT</version></project>要素:

mvn versions:set versions:commit -DnewVersion="0.0.25"

それはあなたのPOMを修正し、あなたの好みに合わせてバージョンを調整します。この変更をソースコード管理リポジトリにコミットすることをお勧めします。このため、scmプラグインのscm:checkinの目標はうまく機能します(これを自動化する場合)。

mvn scm:checkin -Dincludes=pom.xml -Dmessage="Setting version, preping for release."

その後、リリースを実行できます( maven-release-plugin をお勧めします)。その後、上記のように新しいバージョンを設定してコミットできます。

バージョンプラグイン はあなたの友達です。上記のスクリプトには、パラメータ化されたビルド、またはできればMaven固有のビルド変数を取得できるjenkinsのgroovyプラグインが含まれる可能性があります。

27
Anew

これを簡単に行う方法が1つあります。 1つのコマンドで、必要な部分を変更できます。

カットアンドペーストの場合:

mvn build-helper:parse-version versions:set -DbuildNumber=555 '-DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}-${buildNumber}'

明確にするために:

mvn build-helper:parse-version versions:set -DbuildNumber=555
   '-DnewVersion=
                  ${parsedVersion.majorVersion}
                 .${parsedVersion.minorVersion}
                 .${parsedVersion.incrementalVersion}
                 -${buildNumber}'

これはビルド値を使用して一度にバージョンを更新する方法の簡潔な例です

7

手始めに、あなたは手でそれを行うことができます。ビルドがMavenの規則に従っている場合、バージョン番号の管理を支援するために存在するいくつかのMavenプラグインのいずれかを活用できます。

maven-versions-plugin は、バージョン番号の手動変更を自動化するのに役立ちます。リリースを行う前にpomsを調整するのに役立つNice CLIコマンドがあります。

次に、リリースをカットするプロセス全体を自動化する maven-release-plugin があります。スナップショットをリリースバージョンに変更し、リリースビルド後に次のスナップショットにロールバックします。このすべてのプロセス中に、個別バージョンのPOMをソース管理にコミットします。

繰り返しになりますが、Mavenコミュニティのより自動化された部分で成功を収める秘secretは、ビルドがMaven方式で物事を行っているかどうかです。ハッキングされ、高度に調整された、型にはまらないビルドには、通常、リリースプラグインを正常に使用するための多くの障壁があります。

6
chad

ビルドヘルパープラグインは正規表現の置換をサポートし、必要に応じてバージョン番号を解析することもできます。 http://www.mojohaus.org/build-helper-maven-plugin/

2
John Smith

parsedVersion.nextIncrementalVersionのようなものがあります

mvn build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} versions:commit

1
MariuszS

これを見て コメント このバージョンを使用して依存関係を提供していることを説明しています。 maven-release-plugin は、バージョンの管理に役立ちます。そのため、pom.xmlでそのプラグインを提供します。

また、リリースと開発バージョンを手動で提供するステップでは、2つの文字列パラメーターを持つジョブをjenkinsで作成します。
developmentVersion
releaseVersion
「トップレベルのMavenターゲットを呼び出す」ビルドステップを追加して、リリースを実行します(例)。

clean release:clean release:prepare release:perform -DdevelopmentVersion=${developmentVersion} -DreleaseVersion=${releaseVersion}

ジョブをビルドするとき、developmentVersionとreleaseVersionの両方を挿入するよう求められます。

乾杯、
Despot

0
despot