四处走动"介绍图表周期" maven例外

时间:2016-06-20 20:57:05

标签: java maven web-applications build

我的应用程序中有模块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>

1 个答案:

答案 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