0

相互依存プロジェクトのリリースを自動化しようとしています。これがシナリオです。A と B の 2 つのプロジェクトがあります。プロジェクト B はプロジェクト A に依存しています。自動化された手順で実行する必要がある手順は次のとおりです。

  1. maven-release-plugin を使用してプロジェクト A をリリースします。(私はこれを行う方法を知っています)。これが私が定義した一連の目標です: release:clean release:prepare -DcommitByProject=true -DautoVersionSubmodules=true release:perform
  2. プロジェクト A の最新の SNAPSHOT バージョンをリポジトリにデプロイします。(単に deploy を使用しても機能します。ただし、以下で説明するわずかな問題があります。)

  3. フル リリースを行う前に、プロジェクト B のプロジェクト A の SNAPSHOT 依存関係バージョンを最新のリリース バージョンに更新します。これを達成するために、プロジェクト B の POM ファイルで、prepareGoals次のように設定しました ( clean verify versions:use-latest-versions versions:commit )。

すべてがうまくいくようです。

今私が欲しいのは、リリースが完了したら、プロジェクト B のプロジェクト A の依存関係が、リリース中にrelease:prepareプラグインによって設定された最新の SNAPSHOT バージョンに依存することです。

私が思いついた解決策は、 release:performが実行された直後に、プロジェクト A SNAPSHOTのmaven deployを実行することでした。(プロジェクト A の新しいゴール シーケンス: release:clean release:prepare -DcommitByProject=true -DautoVersionSubmodules=true release:perform clean install deploy )

次に、プロジェクト B のリリース サイクルの最後に、 versions:use-next-snapshotsを実行できます。(プロジェクト B の新しい目標シーケンス: release:clean release:prepare -DcommitByProject=true -DautoVersionSubmodules=true release:perform versions:use-next-snapshots )。ここでは、プロジェクト A の依存関係のみを処理するようにバージョン プラグインを制限しています。

問題は、プロジェクト A の目標を実行するときです。Maven は、インクリメントされたバージョンではなく、古いバージョンで SNAPSHOT をデプロイします。したがって、プロジェクト A のリリース前のバージョンが1.1-SNAPSHOTだった場合。リリース後のバージョンは1.2-SNAPSHOT になりました。リリース バージョンは1.1になります。ただし、デプロイされたプロジェクト A スナップショット バージョンは1.1-SNAPSHOTであり、 1.2- SNAPSHOT ではありません。

maven-release-plugin の目標が実行された後、maven がメモリ内の pom を更新していないと推測しています。

4

1 に答える 1

1

両方のプロジェクトを親プロジェクトに所属させることを検討しましたか。次に、親プロジェクトをリリースすると、各モジュール(サブプロジェクト)が自動的にリリースされます

于 2011-06-20T22:55:38.380 に答える