多模块maven项目的循环依赖

Cyclic dependencies on multi-module maven project

过去几周我一直在 java 中编写一个 非常 简单的区块链作为一个 Intellij 的 maven 项目。当我开始这个项目时,我对驻留在单个模块中的所有内容都感到满意,尽管从技术上讲需要构建两个工件才能使项目正常工作(一个用于 application/control 逻辑的可执行 .jar 和一个 . war 用于通过 tomcat 容器部署的所有 p2p 内容)。我使用单独的配置文件手动构建 .jar 和 .war,以及 executed/deployed。

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

当您的子模块 c1 和 c2 相互依赖时,意味着一个 class 或包,那么公共包应该在单独的模块 c3 中。在 c1 和 c2 项目中添加 c3 作为依赖。

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