2012-07-30 9 views

答えて

3

モジュールは、個別にデプロイする必要がある場合は、複数のモジュールにプロジェクトを例に便利です@Esko Luontola

分割の答え..

が誤って解釈される可能性が。別々に配備されるモジュールをお持ちの場合は、まったく逆です。このような場合は、マルチモジュールビルドを作成しないでください。これは、単純な別のMavenプロジェクトを介して行う必要があります。

マルチモジュールビルドのアイデアは、通常、クライアント、サーバー、ejb、戦争などのようないくつかの要素で構成される耳のプロジェクトのようなモジュールがある場合です。これは、通常、マルチモジュールビルドとは、すべてのモジュールが同じバージョン番号を持ちますが、他のモジュールが別々にアクセスして使用できることを意味します。

1

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

1

私は、マルチモジュールのMavenプロジェクトを使用することをお勧めしますここでいくつかのより多くのユースケースがあります:あなたのモジュールが同じ依存関係を共有

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

  2. 複数のプロジェクトを一括して実行する必要がある場合は、 (私は個人的に使っています)、私はすべてのプロジェクトからパッケージを作成し、それをcostumerに送って、メインのpomを使ってビルドし、他のmavenプラグインを使ってzipファイルとしてパッケージ化します。

3

この質問は一般的にソフトウェアの詳細です。 Mavenはこれを行うための単なる方法です。

私は"Continuous Delivery", by Jez Humble

コンポーネントがどのようなものですから数行をqouteでしょうか?これはソフトウェアでひどく過負荷になっている用語で、 です。できるだけ明確にしようと考えています。 コンポーネントについて言及すると、アプリケーション内に合理的に大規模なコード 構造体が定義されており、明確に定義されたAPIを使用している可能性があります。 が別の実装のためにスワップアウトされる可能性があります。 コンポーネントベースのソフトウェアシステムは、 コードベースが、明確に定義され、他のコンポーネントとのやり取りが制限された によって動作を提供する個別の部分に分割されるという事実によって区別されます。 コンポーネントベースのシステムのアンチテーシスは、 の境界が明確でない、または異なるタスクを担当するエレメント 間の懸念の分離を伴わないモノリシックシステムです。モノリシックシステムは、典型的にはカプセル化が不十分であり、論理的に独立した構造間の密結合がデメテルの法則を破る。コンポーネント・ベースの設計を採用

は...

しばしば再利用を促進し、そのような疎結合のような良好な建築特性として記載されています。この は真ですが、もう1つの重要な利点もあります。これは、大規模な開発チームが協力するための最も効率的な方法の1つです。

...

多くのプロジェクトでは、単一のバージョン管理リポジトリと シンプルな展開パイプラインと罰金です。しかし、多くのプロジェクトでは、 に発展しました。これは安価なときに離散コンポーネントを作成することを誰も決定していないためです。小規模なプロジェクトが大きいプロジェクトに変更される のポイントは流動性があり、 をあなたの上にスニークします。

は...

最後に、それは 「組織された設計システムと述べコンウェイの法則を、注目に値します。 。 。例えば、 組織の通信構造のコピーである のデザインを生成するように制約されています。 " の開発者が電子メールでしか通信しないオープンソースプロジェクトは、ほとんどのモジュールが インターフェイスである傾向があります。小規模な共同チームによって開発された製品は、 がしっかりと結合され、モジュラーではありません。 開発チームを設定する方法に注意してください。これは、 アプリケーションのアーキテクチャに影響します。

私はこの最後の声明がいかに明快で正確であるか驚くべきことを見出します。 そして私は本を強くお勧めします! :-)

関連する問題