2013-05-09 56 views
28

我们如何解决maven循环依赖关系。假设A是父项目,B和C是子项目。如果B依赖于C并且C依赖于B,除了拥有不同的项目之外,还有什么方法可以解决循环依赖问题。如何解决maven循环依赖关系

在此先感谢,我在论坛中搜索,但无法得到确切的解决方案。请让我知道是否有任何可能。

+1

你已经排除创建一个新的项目,这是我会做的......任何你不想这样做的理由?这将是最好的解决方案。 – NilsH 2013-05-09 18:30:37

回答

19

Maven不允许项目之间的循环依赖关系,因为否则不清楚首先要构建哪个项目。所以你需要摆脱这个循环。一个解决方案就是你已经提到的那个,来创建另一个项目。另一种方法是将一些类从B移动到C,反之亦然。或者,如果不需要两个项目,有时将项目B和C合并到一个项目是正确的。

但是,如果不知道和分析为什么你的项目相互依赖,建议最好的解决方案有点难。

因此,我建议您可以使用诸如JDependInteliJ分析工具的工具来查找有问题的类,并根据它们为您的软件找到更好的设计。大多数时候,我创建了一个类似于接口模块和实现模块的东西,它可以摆脱大多数循环。

6

创建一个新项目确实是一个解决方案。

依赖倒置是第二种可能的解决方案。

参照here的非循环依赖性原则。

here用于依赖反转原理。