如何解决Maven中的循环依赖?

问题描述 投票:38回答:2

我们如何解决Maven循环依赖?

假设A是父项目,B和C是子项目。如果B依赖于C而C依赖于B,除了拥有不同的项目之外,还有什么方法可以解决循环依赖性。

maven dependencies cyclic
2个回答
31
投票

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

但是,如果不了解和分析为什么您的项目相互依赖,那么建议最佳解决方案是很困难的。

因此,我建议您可以使用JDependInteliJ分析工具等工具来查找有问题的类,并根据它们为您的软件找到更好的设计。

大多数时候,我创建类似于接口模块和实现模块的东西,它摆脱了大多数周期。


8
投票

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

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

有关非循环依赖原则,请参阅here

here的依赖倒置原则。

© www.soinside.com 2019 - 2024. All rights reserved.