1

プロジェクトのリリースプロセスを定義しようとしています。

Mavenリリースプラグインを使用してリリースを完了することはできましたが、準備の前にすべての内部SNAPSHOT依存関係をリリースバージョンに手動で更新し、リリース後に再びSNAPSHOTバージョンに戻す必要がありました。

私はmavenバージョンのプラグインを使用しましたが、SNAPSHOTビルドである企業の依存関係を検出し、使用する正しいリリースビルドを一覧表示します。

Mavenリリースプラグインを試し、目標を準備し、依存関係のSNAPSHOTバージョンについて文句を言います。

SNAPSHOTの依存関係を最新のリリースバージョンに更新し、リリース後にSNAPSHOTバージョンに戻すリリースを行う方法はありますか?あるいは、これは、リリースやSNAPSHOTSでMavenを使用することになっている方法ではないかもしれません。

4

1 に答える 1

1

maven を使用してリリースを作成する場合: それは決定的なものでなければなりません。つまり、いったん作成されると、もう変更できません (つまり、ソースは変更できず、依存関係も変更できません)。

したがって、moduleB に依存する moduleA と moduleA のリリースを作成するとします。moduleA がリリースされる前に moduleB をリリースする必要があり、moduleA は moduleB のリリースされたバージョンに依存する必要があります。

重要なことの 1 つは、SNAPSHOTバージョンに戻らないことです。少なくとも私が理解しているように、それは次のことを意味します:

  • moduleB-1.0.0 リリースを作成
  • 依存関係を moduleB-1.0.0 に変更
  • moduleA-1.0.0 リリースを作成する
  • 次に、依存関係を moduleB-1.0.0-SNAPSHOT に戻します。

moduleB-1.0.0 が存在する (つまり、リリースされる) と、アーティファクト moduleB-1.0.0-SNAPSHOT は使用できなくなります。

SNAPSHOT に戻る代わりに、依存関係を次の SNAPSHOT バージョンに更新する必要があります (たとえば、moduleB-SNAPSHOT-1.0.1)。

そうは言っても、多くの SNAPSHOT アーティファクトに依存するモジュールをリリースするのは簡単なプロセスではありません。メインのアーティファクトをリリースする前にすべての依存関係をリリースする必要があるからです。

私たちが持っているのは、ほとんどの場合、同じバージョン管理戦略を持つ他の多くのアーティファクト (企業モジュールと呼びましょう) に依存するメインのアーティファクトです。corporate-module-versionそのため、多くの依存関係で使用されるバージョンを保持するプロパティを 1 か所で定義できます。

リリースプロセスは次のとおりです。

  • すべてのスナップショット依存関係をバージョン番号 1.0.0 でリリースします (maven-release-plugin を使用: このステップの後、SCM の企業モジュールのすべての pom.xml は 1.0.1-SNAPSHOT になります) (この記事の最後にある重要な注意事項を参照してください)このステップを容易にするため)
  • メインアーティファクトでプロパティを手動で「1.0.0」に変更しcorporate-module-versionます(すべてのSNAPSHOT依存関係がリリースされたばかりのバージョンに置き換えられるように)
  • を保持している変更された pom.xml をコミットしますcorporate-module-version
  • maven-release-plugin を使用: メインのアーティファクトをリリースします (その後、SCM の新しいバージョンは 1.0.1-SNAPSHOT のようなものになります)
  • メインアーティファクトでプロパティを手動でcorporate-module-version「1.0.1-SNAPSHOT」に変更します(すべての依存関係が最新のスナップショットバージョンに置き換えられるように)

重要な注意: すべての企業モジュールを一度にリリースするには、すべての企業モジュールを保持するマルチモジュールの親プロジェクトを用意する必要があります。maven-release-plugin とマルチモジュールの親プロジェクトであまり問題が発生しないようにするには、親 pom.xml をすべての子 pom.xml の 1 つ上のディレクトリに配置してください (これは maven によって設計された推奨事項ですが、残念ながら、場合によっては、 、Eclipse ユーザーは、Eclipse が階層的なプロジェクトを好まないため、それに従っていません)

于 2013-02-22T12:58:34.130 に答える