Java 如何在另一个子模块中包含一个子模块服务

Java 如何在另一个子模块中包含一个子模块服务,java,maven,spring-mvc,dependencies,circular-dependency,Java,Maven,Spring Mvc,Dependencies,Circular Dependency,我正在从事一个模块化的SpringMVCMaven项目。设计如下: portal (Parent) portal-core (module1) portal-activiti (module2) portal-service (module3) portal-web (module4) 我的父级portal项目仅包含具有公共依赖项的POM和所有其他模块信息,如下所示: <modules> <module>portal-web</module

我正在从事一个模块化的SpringMVCMaven项目。设计如下:

portal (Parent)
  portal-core (module1)
  portal-activiti (module2)
  portal-service (module3)
  portal-web (module4)
我的父级
portal
项目仅包含具有公共依赖项的POM和所有其他模块信息,如下所示:

<modules>
    <module>portal-web</module>
    <module>portal-service</module>
    <module>portal-activiti</module>
    <module>portal-core</module>
</modules>

门户网站
门户服务
门户活动
门户核心
每个子模块都有自己的POM文件。我将模块依赖项安排如下:

<modules>
    <module>portal-web</module>
    <module>portal-service</module>
    <module>portal-activiti</module>
    <module>portal-core</module>
</modules>
门户网站
模块将
门户服务
模块作为依赖项。
门户服务
模块将
门户活动
模块作为依赖项。
portal activiti
模块将
portal core
模块作为依赖项

当我完全运行应用程序(从web模块)时,一切正常。但当我在单个模块上运行JUnit测试用例时,我得到了循环引用错误


例如,在
activiti
模块下,我需要
portal service
模块中的一些服务。因此,如果我将
门户服务
作为依赖项包含在
门户活动
模块中,它将导致循环引用。因为
门户服务
模块已将
门户活动
作为依赖项。我在哪里犯了错误?

“门户服务模块将门户activiti模块作为依赖项”和“例如,在activiti模块下,我需要门户服务模块提供一些服务。”。最后一句话的意思是你也有一个从activiti到服务的依赖关系,所以是的,你得到了一个循环依赖关系。如果您的测试需要编译代码以外的其他依赖项,则将这两个模块中使用的代码移到其他地方(可能是新模块或核心),这表明测试不是在单元测试级别上,而是在集成级别上,因此您应该将测试移到具有所有依赖项的模块上,正如@PeterLiljenberg所建议的那样。