我有多个子模块的Maven项目。其中一个子模块,假设子模块X
依赖于所有其他子模块,因为Maven插件集成了其他所有子模块。
现在我想在我的父POM的verify
阶段使用这个Maven插件在整个项目中进行实际操作(有点吃自己的狗食)。
不幸的是我收到了错误:
反应堆中的项目包含循环参考
那么如何为Maven Plugin子模块进行这样的dogfood集成测试呢?
答案 0 :(得分:1)
我会审查聚合和继承:它们确实是Maven中的two different概念,经常组合使用但是也可以以完全分离的方式使用。
在这种情况下,您的插件子模块肯定被定义为聚合器pom中的一个模块(也就是说,它是一个子模块)。但我也假设插件子模块也具有聚合器pom的父pom(也就是说,聚合器pom也是父pom,这是一种常规方法,但并不总是需要)。
后者是否需要?您可以继续使用多模块/聚合器方法,而无需将聚合器作为插件子模块的父级。因此,插件subModule仍然是聚合器pom的一个模块,但它不会将聚合器pom作为父节点,将它与它解耦,从而打破循环依赖。
可能的缺点:在聚合器pom中,您还定义了插件子模块中所需的常见事物(依赖关系管理,属性)。如果是这种情况,那么您只需要为相关的子模块复制/查看这些常用设置。
答案 1 :(得分:0)
我方的小建议。循环意味着您的模块中存在一些传递依赖。请检查模块的依赖树,并首先解决循环依赖。