1

2 つのマルチモジュール プロジェクトがあります。1 つはメイン プロジェクト ツリーです。もう一方のプロジェクト ツリーは、最初のプロジェクトからアーティファクト (WAR、JAR など) を取り込みます。それぞれに独自の親 pom があります。

バージョン番号を同じに保ちたいと思います。プロジェクト 2 には、プロジェクト 1 の成果物を含む依存関係管理セクションがあります。これに関する問題は、スナップショットのためにプロジェクトをリリースできないことです。

例えば。バージョン番号 (両方のプロジェクト) は 3.4-SNAPSHOT です。プロジェクト 1 のバージョン 3.4 をリリースできます。すべての pom バージョンは 3.4-SNAPSHOT から 3.5 に設定されます。プロジェクト 2 に進むときも、まったく同じことをしたいと思っています。問題は、プロジェクト 1 の依存関係が 3.4-SNAPSHOT にあり、それらを自動的に 3.5 にする方法がわかりません。実際にリリースする前に、依存関係をリリースバージョンに更新したいようなものです。

両方のツリーを同じ親 pom から拡張すると、maven リリース プラグインが依存関係をサブモジュールとして検出し、自動的に更新することを理解しています。

バージョン プラグインについて少し読みましたが、use-latest-versions の部分が気に入りませんでした (危険なようです)。Update-properties は有望に見えましたが、もう一度ざっと見てみると、パッケージ化された use-latest-versions プラグインがわずかに異なっているように見えました。

また、そのまま使ってみ${project.version}たのですが、依存関係に 3.4-SNAPSHOT を入れるのと基本的には同じです。実際にはバージョンがまだ更新されていないため、スナップショットのためにリリースできないというエラーが表示されます。

4

2 に答える 2

1

あなたが認めるように、ここでの正しい答えは、共通の親を持つようにプロジェクトを再配置することです。それ以外は単なる回避策です。

versions:use-releasesしかし、あなたの目標を達成するかもしれないように私には見えます。プロジェクト 1 の依存関係のみが更新されるように、インクルード リストを指定できます。

これを自動化する場合は、この目標を の前のライフサイクル フェーズcompileの 1 つにバインドすることを検討できます。

編集:悲しいことに、これは不可能のようです。少なくとも、ページの上部に記載されている「直接呼び出しのみで実行する」ということで、私はそのように理解しています。

于 2012-12-11T20:24:06.360 に答える
1

プロジェクトを構成する方法は、完全に独立しています。log4j の依存関係のバージョンが現在のプロジェクト B のバージョンと同じであることを求める場合もあります。

自動ではありませんが、プロジェクト B 内のプロジェクト A へのすべての参照のバージョンを置き換えて、プロジェクト B の親 pom で定義されているプロパティを使用する必要があります。その後、プロジェクト A をリリースするときに変更するだけです。 1 つの pom であるため、project.a.versionプロパティは SNAPSHOT ではなくリリースされたバージョンになりました。B のリリース後、B を に戻して${project.version}同期を保つことができます。

于 2012-12-11T20:27:47.040 に答える