web-dev-qa-db-ja.com

Mavenの循環依存関係を解決するにはどうすればよいですか?

Mavenの循環依存関係を解決するにはどうすればよいですか?

Aが親プロジェクトであり、BとCが子プロジェクトであるとします。 BがCに依存し、CがBに依存している場合、異なるプロジェクトを持つ以外に循環依存関係を解決する方法はありますか。

40
user2367460

Mavenは、プロジェクト間の循環依存関係を許可しません。そうしないと、どのプロジェクトを最初にビルドするかが明確にならないからです。したがって、このサイクルを取り除く必要があります。 1つのソリューションは、別のプロジェクトを作成するために、既に述べたものです。別の方法としては、BからC、またはその逆のクラスを単に移動するだけです。または、プロジェクトBとCを2つ持つ必要がない場合は、プロジェクトBとCを1つのプロジェクトにマージすることが正しい場合があります。

しかし、プロジェクトが相互に依存している理由を理解して分析することなく、最適なソリューションを提案することはやや困難です。

したがって、 JDepend または InteliJ のようなツールを使用して問題のあるクラスを見つけ、それに基づいてソフトウェアのより良い設計を見つけることをお勧めします。

ほとんどの場合、インターフェイスモジュールと実装モジュールのようなものを作成し、ほとんどのサイクルを取り除きます。

34
mszalbach

新しいプロジェクトを作成することは確かに1つのソリューションです。

依存関係の反転は、2番目の可能な解決策です。

非循環依存関係の原則については、 here を参照してください。

そして、 here Dependency Inversion Principleの場合。

8
Dormouse