14

Mavenのマルチモジュールプロジェクトについて一般的な質問があります。いつ、なぜそれを選ぶのですか?

4

4 に答える 4

6

@EskoLuontolaの答え

プロジェクトを複数のモジュールに分割すると、たとえば、モジュールを個別にデプロイする必要がある場合に役立ちます。

誤解される可能性があります。個別にデプロイされるモジュールがある場合は、正反対です。このような場合、マルチモジュールビルドを作成しないでください。これは、単純な個別のMavenプロジェクトを介して実行する必要があります。

マルチモジュールビルドのアイデアは、earプロジェクトのように一緒に属するモジュールがある場合です。これは通常、クライアント、サーバー、ejb、warなどの他のいくつかで構成されます。これは通常、マルチモジュールビルドを介して処理されます。モジュールのバージョン番号は同じですが、他のモジュールから個別にアクセスして使用できます。

于 2012-07-31T07:37:10.957 に答える
4

この質問は、ソフトウェア全般に関するもののようです。Mavenはそれを行う1つの方法にすぎません。

JezHumbleによる「ContinuousDelivery」から数行を引用します

コンポーネントとは何ですか?これはソフトウェアでひどく過負荷になっている用語なので、それが何を意味するのかをできるだけ明確にするように努めます。コンポーネントについて話すときは、アプリケーション内の適度に大規模なコード構造を意味し、明確に定義されたAPIを使用して、別の実装に交換できる可能性があります。コンポーネントベースのソフトウェアシステムは、コードベースが個別の部分に分割され、他のコンポーネントとの明確に定義された限定された相互作用を通じて動作を提供するという事実によって区別されます。コンポーネントベースのシステムのアンチテーゼは、異なるタスクを担当する要素間の明確な境界や関心の分離がないモノリシックシステムです。モノリシックシステムは通常、カプセル化が不十分です。

..。

コンポーネントベースの設計を採用することは、再利用を促進し、緩い結合などの優れた建築特性を促進すると説明されることがよくあります。これは真実ですが、もう1つの重要な利点もあります。これは、開発者の大規模なチームがコラボレーションするための最も効率的な方法の1つです。

..。

多くのプロジェクトは、単一のバージョン管理リポジトリと単純なデプロイメントパイプラインで問題ありません。ただし、多くのプロジェクトは、安価なときに個別のコンポーネントを作成することを誰も決定しなかったため、保守不可能なコードのモラスに進化しました。小さなプロジェクトが大きなプロジェクトに変わるポイントは流動的であり、あなたに忍び寄ります。

..。

最後に、「システムを設計する組織」と述べているコンウェイの法則に注目する価値があります。。。4したがって、たとえば、開発者が電子メールのみで通信するオープンソースプロジェクトは、インターフェイスがほとんどなく、非常にモジュール化されている傾向があります。小さな同じ場所に配置されたチームによって開発された製品は、モジュール式ではなく、緊密に結合される傾向があります。開発チームの設定方法に注意してください。アプリケーションのアーキテクチャに影響します。

この最後のステートメントがどれほど明快で正確であるかは驚くべきことです。そして、私はその本を強くお勧めします!:-)

于 2012-08-01T06:27:50.003 に答える
1

プロジェクトを複数のモジュールに分割すると、たとえば、モジュールを個別にデプロイする必要がある場合、プロジェクトの一部のコンシューマーがクラスのサブセットのみを必要とする場合、またはライブラリの開発者が明確に区別したい場合に役立ちます。パブリックAPIとプライベート実装の間。また、大規模なプロジェクトでは、コードが技術的にすべて同じモジュールに含まれている場合でも、コードを整理しやすくすることができます。

于 2012-07-30T23:05:40.097 に答える
1

マルチモジュールMavenプロジェクトの使用をお勧めするユースケースは他にもいくつかあります。

  1. モジュールは同じ依存関係を共有します。この場合、メインpomですべての依存関係を指定し、すべてのモジュールがそれを楽しむことができます。(モジュールごとに同じ依存関係を指定する必要はありません。)

  2. 複数のプロジェクトをまとめて操作する必要がある場合。(私は個人的に使用しています)、すべてのプロジェクトからパッケージを作成し、それをコスチュームに出荷するので、メインのpomを使用してビルドし、他のmavenプラグインを使用してzipファイルとしてパッケージ化します。

于 2012-07-31T18:57:35.020 に答える