在Maven中避免循环依赖

时间:2020-04-19 03:38:35

标签: java maven class

我有一个项目A,其中有项目B被列为依赖项,但项目B没有以项目A作为依赖项。我想使用B内部的A类而不创建循环依赖项。在不创建新项目的情况下实现此目标的最佳方法是什么?

我想到的一种蛮力方法只是将我需要的类从A复制并粘贴到B,但这显然是不好的。

1 个答案:

答案 0 :(得分:1)

我有一个项目A,其中有项目B被列为依赖项,但项目B没有以项目B作为依赖项。

如果A依赖B,则B不能依赖A。

请注意,即使您不使用Maven,循环依赖性也是有问题的。当您也开始使用Java 8+模块时,它会中断。而且您可以在不使用模块的情况下遇到构建稳定性/收敛性问题。

我想在B内部使用A中的类而不创建循环依赖项。

将类从B移到A。(不要复制它们。您不希望在两个地方使用相同的类。如果完全限定的名称不同,则说明您重复了代码。如果它们相同,则可以也遇到运行时问题。)

或者,创建第三个项目C来包含类并让A和B依赖C。

或者,将A和B合并到一个项目中。

或者,重构类本身;例如在适当的时候引入接口或抽象类,或四处移动方法/功能。

简而言之,有很多方法可以避免项目之间的循环依赖。您只需要分析代码以找出最合适的方法即可。没有神奇的公式/“最佳实践”。辛苦了。