如何使用maven enforcer插件检测* independent *项目之间的依赖性收敛违规

时间:2014-09-22 18:30:21

标签: maven maven-3 dependency-management maven-enforcer-plugin

运行dependency convergence with the maven enforcer plugin时,我们可以轻松检测到某个项目过渡依赖于同一工件的2个不同版本。

但考虑一个为同一系统编写插件的大型团队。并考虑这个小组中的2个小组。

一个团队正在开发插件A并具有以下依赖关系链: A - > B - > C(v 1.1)

另一个团队开发插件X并具有以下依赖关系链: X - > Y - > C(v 2.0)

项目A和X完全独立,但在生产中,两个插件都已部署且存在冲突。虽然两个团队共享CI,但是执行器插件不会检测到这种冲突,因为只有当它们共享一个共同的祖先时才会检测到冲突。

(例如,如果A也有:A - > D - > C(v 1.4),则会检测到这种情况。)

似乎解决方案是定义第3个“超级模块”,它将聚合A和X并将其提供给enforcer插件。我遇到了麻烦:

我定义了这样一个模块。添加了A和X作为依赖项(类型为'pom'),但是当我执行强制执行器时,它不会检测到冲突!就好像超级pom无法“吸收”传递依赖关系。

我在这里缺少什么?

我正在使用maven 3.0.4。


更具体的说明:

This link包含2个独立项目。一个依赖于 org.opensaml:opensaml:2.2.0 ,另一个依赖于 org.apache.solr:solr-core:4.10.0 。麻烦的是前者依赖于 commons-lang:commons-lang:2.1 而后者依赖于 commons-lang:commons-lang:2.6

因此,这两个jar都出现在最终应用程序的类路径中,这有可能破坏任何一个依赖项。

I tried creating another project that aggregates both 'roots',但是执法者插件没有检测到碰撞。

这是我使用的命令行: mvn enforcer:enforce validate

0 个答案:

没有答案