I don't understand. Are you saying you have a dependency on a transitive
dependency? That's wrong! You should declare all your dependencies as
dependencies; you shouldn't rely on transitive dependencies.

Try
mvn dependency:analyze
and fix missing dependencies!

/Anders

On Wed, Dec 16, 2009 at 22:14, egroesbeck <[email protected]> wrote:

>
> Problem: a transitive dependency is found in a graph multiple times but the
> first artifact that depends on it is omitted for a higher version which no
> longer has the transitive dependency.  This causes the final artifact list
> to no longer include the transitive dependency even it other dependencies
> depend on it.
>
> I've included the graph and results of dependency:tree as reference.
> Changing the dependency order in project A to depend on E then C resolves
> the issue as well as managing C to 2.0.0 (the version that eventually is
> resolved).  However as the graph grows larger this becomes burdensome.  I
> didn't find this situation described in the dependency mechanism
> documentation and managing all the dependencies to match the declared
> versions felt like overkill.  Is this behavior correct?
>
> Tested with Maven versions: 2.0.10, 2.2.1, 3.0-alpha-5
>
> Dependency graph:
> A->B->C-1.0.0-SNAPSHOT->D
> A->C-2.0.0-SNAPSHOT
> B->E->D
>
> Result of dependency:tree -Dverbose:
> [INFO] test.projects:projectA:jar:2.0.0-SNAPSHOT
> [INFO] +- test.projects:projectB:jar:1.0.0-SNAPSHOT:compile
> [INFO] |  +- (test.projects:projectC:jar:1.0.0-SNAPSHOT:compile - omitted
> for conflict with 2.0.0-SNAPSHOT)
> [INFO] |  \- test.projects:projectE:jar:1.0.0-SNAPSHOT:compile
> [INFO] |     \- (test.projects:projectD:jar:1.0.0-SNAPSHOT:compile -
> omitted
> for duplicate)
> [INFO] \- test.projects:projectC:jar:2.0.0-SNAPSHOT:compile
>
> Result of dependency:tree -Dverbose -X:
> [INFO] [dependency:tree {execution: default-cli}]
> [DEBUG] Dependency tree resolution listener events:
> [DEBUG] testArtifact: artifact=test.projects:projectA:jar:2.0.0-SNAPSHOT
> [DEBUG] includeArtifact: artifact=test.projects:projectA:jar:2.0.0-SNAPSHOT
> [DEBUG] startProcessChildren:
> artifact=test.projects:projectA:jar:2.0.0-SNAPSHOT
> [DEBUG]   testArtifact:
> artifact=test.projects:projectB:jar:1.0.0-SNAPSHOT:compile
> [DEBUG]   includeArtifact:
> artifact=test.projects:projectB:jar:1.0.0-SNAPSHOT:compile
> [DEBUG]   startProcessChildren:
> artifact=test.projects:projectB:jar:1.0.0-SNAPSHOT:compile
> [DEBUG]     testArtifact:
> artifact=test.projects:projectC:jar:1.0.0-SNAPSHOT:compile
> [DEBUG]     includeArtifact:
> artifact=test.projects:projectC:jar:1.0.0-SNAPSHOT:compile
> [DEBUG]     startProcessChildren:
> artifact=test.projects:projectC:jar:1.0.0-SNAPSHOT:compile
> [DEBUG]       testArtifact:
> artifact=test.projects:projectD:jar:1.0.0-SNAPSHOT:compile
> [DEBUG]       includeArtifact:
> artifact=test.projects:projectD:jar:1.0.0-SNAPSHOT:compile
> [DEBUG]       startProcessChildren:
> artifact=test.projects:projectD:jar:1.0.0-SNAPSHOT:compile
> [DEBUG]       endProcessChildren:
> artifact=test.projects:projectD:jar:1.0.0-SNAPSHOT:compile
> [DEBUG]     endProcessChildren:
> artifact=test.projects:projectC:jar:1.0.0-SNAPSHOT:compile
> [DEBUG]     testArtifact:
> artifact=test.projects:projectE:jar:1.0.0-SNAPSHOT:compile
> [DEBUG]     includeArtifact:
> artifact=test.projects:projectE:jar:1.0.0-SNAPSHOT:compile
> [DEBUG]     startProcessChildren:
> artifact=test.projects:projectE:jar:1.0.0-SNAPSHOT:compile
> [DEBUG]       testArtifact:
> artifact=test.projects:projectD:jar:1.0.0-SNAPSHOT:compile
> [DEBUG]       omitForNearer:
> omitted=test.projects:projectD:jar:1.0.0-SNAPSHOT:compile
> kept=test.projects:projectD:jar:1
> .0.0-SNAPSHOT:compile
> [DEBUG]     endProcessChildren:
> artifact=test.projects:projectE:jar:1.0.0-SNAPSHOT:compile
> [DEBUG]   endProcessChildren:
> artifact=test.projects:projectB:jar:1.0.0-SNAPSHOT:compile
> [DEBUG]   testArtifact:
> artifact=test.projects:projectC:jar:2.0.0-SNAPSHOT:compile
> [DEBUG]   omitForNearer:
> omitted=test.projects:projectC:jar:1.0.0-SNAPSHOT:compile
> kept=test.projects:projectC:jar:2.0.0
> -SNAPSHOT:compile
> [DEBUG]   includeArtifact:
> artifact=test.projects:projectC:jar:2.0.0-SNAPSHOT:compile
> [DEBUG]   startProcessChildren:
> artifact=test.projects:projectC:jar:2.0.0-SNAPSHOT:compile
> [DEBUG]   endProcessChildren:
> artifact=test.projects:projectC:jar:2.0.0-SNAPSHOT:compile
> [DEBUG] endProcessChildren:
> artifact=test.projects:projectA:jar:2.0.0-SNAPSHOT
> [INFO] test.projects:projectA:jar:2.0.0-SNAPSHOT
> [INFO] +- test.projects:projectB:jar:1.0.0-SNAPSHOT:compile
> [INFO] |  +- (test.projects:projectC:jar:1.0.0-SNAPSHOT:compile - omitted
> for conflict with 2.0.0-SNAPSHOT)
> [INFO] |  \- test.projects:projectE:jar:1.0.0-SNAPSHOT:compile
> [INFO] |     \- (test.projects:projectD:jar:1.0.0-SNAPSHOT:compile -
> omitted
> for duplicate)
> [INFO] \- test.projects:projectC:jar:2.0.0-SNAPSHOT:compile
> --
> View this message in context:
> http://old.nabble.com/Transitive-dependency-omitted-if-prior-dependency-resolved-first-then-subsquently-omitted-tp26818594p26818594.html
> Sent from the Maven - Users mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to