Maven运行时范围和循环依赖

时间:2012-07-04 08:38:57

标签: maven runtime cyclic

我有两个模块A和B.Actualy B是A的插件。
B在编译时依赖于A.不依赖于B. 在运行时我想将B添加到类路径中,所以在A的pom.xml中我添加了以下依赖项

pom.xml

    <dependency>
        <groupId>my_group</groupId>
        <artifactId>my_Plugin</artifactId>
        <version>${project.version}</version>
        <scope>runtime</scope>
    </dependency> 

Maven进程因循环依赖性错误而失败

[ERROR] The projects in the reactor contain a cyclic reference: Edge between 'Vertex{label='A'}' and 'Vertex{label='B'}' introduces to cycle in the graph B-->A-->B -> [Help 1]

[错误]

为什么运行时依赖性会影响编译时间?

1 个答案:

答案 0 :(得分:1)

如Conan所建议的,如果可能的话,将您的公共代码提取到一个单独的模块中以解决循环问题。通常,在这种情况下,可以将公共接口和核心类提取到单独的模块中,该模块由两个模块扩展,这导致循环依赖性。然后,您将删除最初处于循环状态的模块的直接依赖性。有时这很难解决,但模块化代码可以帮助您弄清楚如何重构代码,以便它可以轻松重复使用。