8

Maven プロジェクト「コア」があります。プロジェクトの pom.xml では、バージョンは 0.1 です。Jenkins でパラメーター化されたビルドを使用し、テキスト パラメーター myNewVersion=3.1 を設定します。また、次の Maven 目標を設定しました。

versions:set -DnewVersion=${myNewVersion} versions:commit deploy

がビルドされると、maven は pom.xml のバージョンを正しく「3.1」に更新します。ただし、maven deploy タスクは私のプロジェクトを「core-0.1」としてデプロイし、バージョンはまだ 0.1 です。私のNexusの対応する0.1ディレクトリに含まれるpomファイルには、バージョン番号「3.1」が記載されています。

maven バージョン プラグインによって設定された正しいバージョンを使用するように maven deploy タスクを強制するにはどうすればよいですか?

ご助力ありがとうございます。

EDIT 1: 私のニーズを明確にするために: POM 内のプロジェクトのバージョンは、実際のビルド バージョンを示すべきではありません。これを使用して、「コア」プロジェクトと基礎となるシステムおよび API との互換性を判断します。詳細: プロジェクト「core」は、jenkins から「interfaceVersion=3.1」または「interfaceVersion=4.0」パラメーターを取得します。これにより、コア プロジェクトが別の「ライブラリ」バンドルへの依存関係に使用するバージョンが決まります。

現在、2 つの Jenkins ビルド ジョブがあります。1 つは 3.1 用、もう 1 つはコア プロジェクトのライブラリ プロジェクト依存関係用です。それぞれが SVN から同じプロジェクト コードをチェックアウトしますが、異なるバージョン パラメーターをビルド中の「コア」プロジェクトに渡します。このバージョン番号を、pom.xml 内のプロジェクトのバージョン番号として、および nexus にデプロイされている jar のバージョン番号 (つまり、core-3.1.jar または core-4.0.jar) として使用したいと考えています。

編集 2: もう少し進んだ。jenkins で設定したバージョン パラメータを、パラメータ化されたビルド セクションのパラメータとして、pom ファイルのプロジェクトのバージョン番号として使用するだけです。Maven はこれを行うことについて警告しますが、機能します。ただし、「コア」に依存するすべてのプロジェクトで、依存バージョンとして「${myNewVersion}」も指定する必要があります。

そのため、上記で述べたように、versions-maven-plugin を再度使用して、pom ファイルのバージョンを設定/上書きしようとしました。ただし、maven deploy を使用すると、「アクセスが拒否されました」というエラーが表示されるようになりました。「versions:set -DnewVersion=${myNewVersion} versions:commit」を削除して「deploy」を使用すると、機能します。これを解決する方法の手がかりはありますか?

4

2 に答える 2

0

pom.xml で、次のようにバージョンを変数として設定します。

<version>${version}</version>

次に、Mavenを実行します

mvn deploy -Dversion=${myNewVersion}
于 2017-09-06T20:21:12.300 に答える