Maven Plugin 子模块的集成测试

Integration testing of Maven Plugin submodule

我有一个包含多个子模块的 Maven 项目。这些子模块之一,假设子模块 X 依赖于所有其他子模块,因为 Maven 插件集成了其他所有内容。

现在我想在我的父 POM 的 verify 阶段使用这个 Maven 插件在整个项目中做真正的 运行(有点吃自己的 dogfood)。

不幸的是我遇到了错误:

The projects in the reactor contain a cyclic reference

那么如何为 Maven 插件子模块进行这样的 dogfood 集成测试呢?

我会回顾一下聚合和继承:它们确实是 two different Maven 中经常组合使用的概念,但也可以以完全分离的方式使用。

这样的话,你的plugin submodule在aggregator pom中肯定定义为一个module(也就是submodule)。但我也假设插件子模块也有聚合器 pom 作为父 pom(也就是说,聚合器 pom 也是父 pom,这是一种正常的方法,但并不总是必需的)。

后者是必须的吗?您可以继续使用 multi-module/aggregator 方法,而不必将聚合器作为插件子模块的父级。因此,插件 subModule 仍然是聚合器 pom 的一个模块,但它不会将聚合器 pom 作为父级,将其与其解耦,从而打破循环依赖。

可能的缺点:在聚合器 pom 中,您还定义了插件子模块中也需要的通用内容(依赖管理、属性)。如果是这样,那么您将只需要 duplicate/review 相关子模块的这些通用设置。

我的小建议。循环意味着你的模块有一些传递依赖。能否请检查你的模块的依赖树并首先解决循环依赖。