我的应用程序中有模块A和模块B.模块A具有模块B的依赖性,如下所示。
Mdule A pom.xml
<dependencies>
<dependency>
<groupId>group.id</groupId>
<artifactId>B</artifactId>
<type>jar</type>
</dependency>
</dependencies>
现在模块B需要访问模块A中定义的(一个)类。我尝试通过在模块B的pom中定义模块A的依赖关系来实现这一点,如下所示,我得到了周期性异常。
The projects in the reactor contain a cyclic reference: Edge between
`'Vertex{label='A'}' and 'Vertex{label='B'}' introduces to cycle in the graph A --> B --> A
问题:我该如何解决这个问题?我只需要从模块B访问模块A中的几个类。
模块B pom.xml
<dependencies>
<dependency>
<groupId>group.id</groupId>
<artifactId>A</artifactId>
<type>jar</type>
</dependency>
<dependencies>
答案 0 :(得分:1)
在您的情况下,最明智的解决方案是添加另一个common
模块以提供这些通用(实际上)类。
然后你将离开:
project
|_____A
|_____B
A (containing class C1 and C2) ---> B
B ----> (C1 and C2) via A
|_________________not possible, cyclic dependency !!
以下内容:
project
|_____A-module
|_____B-module
|_____common-module (C1, C2 classes)
A (without C1 and C2) ---> B
B ----> (C1 and C2) via common
|_________________ now possible, no cyclic dependency any longer
因此,A也可以在传统上依赖于共同(但如果您愿意,也可以明确表示)。
为了在树视图中更清晰,您将拥有:
common
├─ B
└─ A
这样做还可以改善未来的变化,可维护性和测试,提供更好的关注点分离,即模块级应用的Single Responsibility Principle。