When running dependency convergence with the maven enforcer plugin<http://maven.apache.org/enforcer/enforcer-rules/dependencyConvergence.html>, we can easily detect that a certain project transitively depends on 2 different versions of the same artifact.
But consider a large group that is writing plugins for the same system. And consider 2 teams in this group. One team is developing plugin A and has the following dependency chain: A -> B -> C (v 1.1) the other team develops plugin X and has the following dependency chain: X -> Y -> C (v 2.0) Projects A and X are completely independent but in in production, both plugins are deployed and there is a collision. Although both teams share CI, the enforcer plugin does not detect this collision since collisions are detected only if they share a common ancestor. (for example, if A also had: A -> D -> C (v 1.4), this would have been detected). It seems that the solution is to define a 3rd 'super module' that will aggregate A and X and feed it to the enforcer plugin. I am having trouble with this: I defined such a module. Added A and X as dependencies (of type 'pom') but when I execute the enforcer, it does not detect the collisions! It is as if the super pom fails to 'absorb' the transitive dependencies. What am I missing here? I am using maven 3.0.4.