同様の質問がいくつかありますが、このようなものはありません。この状況にどのように対処しますか(一般的なシナリオ):
親アーティファクト/プロジェクトと、他のプロジェクトをモジュールとして主に使用/宣言する1つのメインプロジェクトを持つ、8〜11の子プロジェクトのプロジェクト。
問題は、すべてのプロジェクトがのような共通の依存関係のみを「厳密に」共有することtestng, logging, apache commons and stuffです。しかし、常に3つが同じ特定の深度(apache-chemistry、jackrabbit、abderaなど)の50〜60%を使用するように、別の2〜3つも同じであるが異なる依存関係の50〜60%を使用します。そして、メインのものは多くの同じdepsを使用します。
これらの「厳密に」共有されていない部門を、他の人が継承できるように親プロジェクトに入れることはできません。したがって、共通の部門のみが継承されます。そして、重複する依存関係がたくさんあります。そして、私はそれらのバージョンを管理することしかできません<dependencyManagement>。
もう1つのオプションは、親pomにほとんどの依存関係を含めることですが、子プロジェクトは必要のないものも継承します。
親プロジェクトを複数持つこともできますが、それは正しくありません。また、親pom定義を適切に文書化/コメントしないと、プロジェクトに必要な依存関係がわからないため、親プロジェクトからの継承は悪夢になる可能性があります。
もう1つの方法は、依存関係コンテナーとしてのみ機能するpomアーティファクトを作成することです。これらは、依存関係の特定のグループを宣言するため、モジュールは、推移的な依存関係を取得するためにそれらを宣言するだけです。しかしねえ、あなたはある種の展開とコミットをしたいですか
OneDepArtifact宣言jackrabit, abdera, chemistry
宣言するAnotherDepArtifacthtmlcleaner, google-api, tika
ThirdDepArtifact宣言spring, httpclient, selenium
これは非常に混乱しています<dependencyManagement>。正しく使用するかどうかはわかりません。依存関係のバージョンを管理する場合にのみ役立つようです。
私は自分のアプリ開発を「Mavenマルチモジュール設計」に適応させることを考えていました。ただし、さまざまなライブラリを使用するだけのSpringサービス/ Beanを1つのモジュールで作成する場合は、他のモジュールも使用するライブラリを使用するという理由だけで、それらを別のモジュールに実装することはありません:-)