2013-05-09 23 views
28

どのようにして循環依存関係を解決できますか? Aが親プロジェクトで、BとCが子プロジェクトであるとします。 BがCに依存し、CがBに依存する場合、別のプロジェクトを持つ以外の循環依存関係を解決する方法はありません。Maven循環依存関係を解決する方法

私はフォーラムで検索しましたが、正確な解決策を得ることはできませんでした。可能性がある場合は教えてください。

+1

あなたは新しいプロジェクトの作成を除外しました。これは私がやることです...あなたがそれをしたくない理由は何ですか?それは最善の解決策になるでしょう。 – NilsH

答えて

19

Mavenではプロジェクト間の循環依存性が許されません。そうしないと、最初にビルドするプロジェクトが明確ではないためです。だからこのサイクルを取り除く必要があります。もう1つのプロジェクトを作成するために、既に言及した解決策があります。これが助けになると、別のクラスがBからCに、またはその逆にいくつかのクラスを移動するだけです。または、プロジェクトBとCを2つのプロジェクトにまとめる必要がない場合は、プロジェクトBとCを1つのプロジェクトにマージすることが正しい場合もあります。

しかし、あなたのプロジェクトが互いに依存している理由を理解して分析することなく、最良のソリューションを提案するのはちょっと難しいです。

JDependInteliJなどのツールを使用して、問題のあるクラスを見つけ出し、それに基づいてソフトウェアのデザインを改善することをお勧めします。

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

6

新しいプロジェクトを作成することは確かに一つの解決策です。

第2の可能な解決策は、依存性反転です。

非循環依存性原理についてはhereを参照してください。

およびhereの依存性反転の原理。

関連する問題