All pastes #969207 Raw Edit

Strange Maven2 transitive depend

public text v1 · immutable
·published 2008-04-03 14:40 UTC
rendered paste body
Strange Maven2 transitive dependency resolution problem:

project A depends on project B (without exclusions) and C (excluding jdom)

project B depends on JAXEN, which depends on JDom

I would expect that project A would have JDom as dependency, like this:

# mvn dependency:tree -Dincludes=:jdom
[dependency:tree]
com.packaging:A:jar:5.0-SNAPSHOT
\- com.p:B:jar:5.0-SNAPSHOT:compile
   \- jaxen:jaxen:jar:1.1-beta-9:compile
      \- jdom:jdom:jar:1.0:compile

However, I get an empty tree.      

If I remove from project A its dependency on project C:

<!--
    <dependency>
      <groupId>com.p</groupId>
      <artifactId>C</artifactId>
      <version>5.0-SNAPSHOT</version>
      <exclusions>
        <exclusion>
          <groupId>jdom</groupId>
          <artifactId>jdom</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
-->

Then I get what I would expect: a dependency on JDom via project B.

Why does that happen?

If I try the same thing on other machines, the dependency on JDom always appears.

I'm using Maven 2.0.8