24

Mavenを使用したソフトウェアバージョニングおよびマルチモジュールプロジェクトのベストプラクティスは何ですか?

つまり、Mavenを使用してマルチモジュールプロジェクトを作成する場合、バージョン管理に最適なアプローチは何ですか?すべてのモジュールに単一のバージョンを使用するには(最上位のプロジェクトで定義)?各モジュールのバージョン(各モジュールのPOMで定義)を使用するには?私が見逃している別のアプローチはありますか?各アプローチの長所と短所は何ですか?

一般に、異なるモジュールは一緒にリリースされますか(おそらく同じバージョン番号を共有します)?

ありがとう

4

4 に答える 4

7

正直なところ、それはあなたが何をしたいかによって異なります。マルチモジュール プロジェクトは複数の理由で作成されます。その 1 つは、すべてのモジュールではなく、変更されたものだけをデプロイする必要があることです。

このように考えてみてください: 非マルチモジュール プロジェクトがあり、サービス レイヤーの 1 行だけを変更する必要がある場合、プロジェクト全体を再構築し、すべてのコードを再度デプロイする必要があります。サービス層が変わります。

マルチモジュール プロジェクトを使用すると、プロジェクトを再生成して、変更されたサービスのみをデプロイできます。これによりリスクが軽減され、サービス モジュールのみが変更されたことが保証されます。

マルチモジュール プロジェクトを使用することには、ここには記載していない多くの利点もありますが、モジュールのバージョン番号を同期させないことには確かに大きな利点があります。

プロジェクトをビルドするときは、ビルド用に互換性のあるすべての jar をまとめて保持するリポジトリにプロジェクトをデプロイすることを検討してください (ビルドごとに、最も親の pom バージョン番号を持つ新しいフォルダーが作成されます)。そうすれば、どの jar が互換性があるかについてのドキュメントを保持する必要はありません...それらはすべて、ビルド番号とともにデプロイされるだけです。

于 2011-11-30T18:13:03.333 に答える
5

私はこの正確な問題の解決策を自分で探していましたが、versions-maven-pluginはまさに私が必要としていたものでした。SCM システムと通信するリリース プラグインが好きではありません。バージョン プラグインは必要なことだけを行います。プロジェクトのすべての pom に新しいバージョン番号を設定します。

mvn versions:set -DnewVersion=2.0.0

その後、コミット、タグ、および公式のビルド サーバーのビルドに進むことができます...

編集

バージョン プラグインは、maven マルチモジュール プロジェクトがどのように構成されているかによって異なります。その結果、複雑なマルチモジュール プロジェクトのすべての POM ファイルが更新されないことがよくあります。私は sed と find がより確実に仕事をすることを発見しました:

sed -i 's/1.0.0-SNAPSHOT/1.0.0-RC1/g' `find . -name 'pom.xml'`
于 2012-01-11T11:17:51.507 に答える
3

さまざまなモジュールが 1 つの全体の一部であると見なしたため、通常はマルチモジュール プロジェクトを作成します。おそらく、クライアント部分、コントローラー部分、サービス部分です。または、サービスを備えた UI かもしれません。

いずれにせよ、さまざまなモジュールのバージョン番号をロックステップで移動することは理にかなっています。ただし、Maven は原則としてそれを強制しません。

あなたの質問に関して

一緒にリリースされた異なるモジュールです (同じバージョン番号を共有している可能性があります)

そう思うでしょう。これが、マルチモジュール プロジェクトにする理由の 1 つです。そうしないと、モジュールを独立したプロジェクトとして持つことができます。

もちろん、これはエッジケースと例外が蔓延している種類のものです;-)

于 2011-11-30T17:59:51.300 に答える