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.

Reply via email to