maven循环引用的问题

Posted lnlvinso

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven循环引用的问题相关的知识,希望对你有一定的参考价值。

  多模块的maven工程,有时候由于设计的不合理或者需求的变更。会导致模块之间产生循环依赖,编译的时候会报如下的错误:

        [INFO] Scanning for projects... [ERROR] The projects in the reactor contain a cyclic reference: Edge between .....

       

        重构肯定是需要的,把2个模块中都用到部分移到common子模块中。2个模块都依赖common中的代码,这样就可以消除2个模块的相互引用了。

  

        也可以使用build-helper-maven-plugin插件,比如A依赖B,B依赖C,C依赖A的情况。这个插件提供了一种规避措施,即临时地将工程A、B、C合并成一个中间工程,编译出临时的模块D。然后A、B、C再分别依赖临时模块D进行编译 。

 

        有IOC机制的工程,可以如下的解决,我碰到的问题就是这样解决了。

        B已经依赖了A,但是现在A又需要使用B中的相关方法。可以在A中定义一个接口,由于B依赖A,所以B可以直接实现该接口,然后A中通过接口声明并注入B中的实例即可。

        我使用的是HK2中的@Contract和@Service。

 

        关于build-helper-maven-plugin插件和maven循环依赖,可以看一下https://hck.iteye.com/blog/1728329

        

以上是关于maven循环引用的问题的主要内容,如果未能解决你的问题,请参考以下文章

【OC梳理】循环引用及解决

Python对象的循环引用问题

Spring如何处理循环引用

【OC语法】block的循环引用

python 关于循环引用以及标记清除的问题

如何解决循环引用?