对多模块Maven项目的循环依赖

时间:2019-06-03 00:23:48

标签: java dependency-management multi-module cyclic-dependency

在过去的几周里,我一直在用Java编写一个非常的简单区块链,作为Intellij的Maven项目。当我开始这个项目时,尽管一切都需要在一个模块中进行,但是从技术上讲,我需要建立两个工件才能正常工作(对于应用程序/控制逻辑,可执行文件为.jar,对于通过tomcat容器部署的所有p2p内容)。我使用单独的配置文件来构建.jar和.war,然后手动执行/部署它们。

但是,我对此已经感到厌倦,并认为将其拆分为一个多模块项目(.war,.jar和.ear?也许是..)是实现我的目标的唯一途径使用单个命令一次即可构建和执行/部署所有内容。我已经开始这样做,但是两个子模块之间的循环依赖关系使我感到困惑。我在依赖于网络的应用程序端有代码,而依赖于应用程序的网络端有代码。如何通过创建另一个模块以及另一个pom.xml来解决此问题?任何建议将不胜感激!请耐心等待,因为我仍然是java / maven的新手,这是我对任何复杂程度的应用程序的第一次真正的破解。

1 个答案:

答案 0 :(得分:1)

当子模块c1和c2相互依赖时,即一个类或程序包,则公用程序包应位于单独的模块c3中。在c1和c2项目中都将c3添加为依赖项。

您不能将c1添加为c2中的依赖项,而不能将c2添加为c1中的依赖项。因为当maven尝试分析您的代码时,由于这种循环依赖性,它无法找到要首先构建的模块。