Am 12/15/16 um 09:28 schrieb Robert Scholte:
> I think I understand where the confusion is coming from. We must be very 
> clear about definitions. 
> Transitive means adding all indirect dependencies with the compile and 
> runtime dependencies.
> So the transitive *scope* itself is not transitive, meaning all indirect 
> *test*-scoped are not added to the classpath. But IMO a test-scoped 
> *dependency* is transitive, all its compile and runtime dependencies must be 
> added to the classpath.
> 

That's the way master behaves and it makes sense. What is different is
when a transitive dependency is managed to something not transitive.
That will disappear from the resolution result. I'd expect that to
happen, BTW. Means you just must be sure that managing a transitive
dependency from something transitive to something non-transitive will
make that dependency disappear the same way it would disappear when not
managed but declared that way directly.

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>GID</groupId>
      <artifactId>AID</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

All GID:AID dependecies are handled the same way they are handled when
'<scope>test</scope>' had been declared in the model for the dependency
directly. That's consistent. The resolver will apply that 'test' scope
everywhere for GID:AID no matter what has been declared in the model but
did call the 'DependencySelector' without that management applied.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to