[
https://issues.apache.org/jira/browse/MNG-5739?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16226076#comment-16226076
]
Christian Schulte commented on MNG-5739:
----------------------------------------
[~nadavwe] There has been some discussion about this on dev@ and some ongoing
proposals for how to deal with this in an upcoming model version. Haven't
followed any discussions for a few months. Issue will be taken care of. Last
time it was something about "support different classpaths per project rather
than just one - e.g. test and compile where test overrides compile". There has
been consensus that this issue cannot be dealed with in model version 4.0.0.
> Adding a test dependency can move dependencies from the compile scope to the
> test scope
> ---------------------------------------------------------------------------------------
>
> Key: MNG-5739
> URL: https://issues.apache.org/jira/browse/MNG-5739
> Project: Maven
> Issue Type: Bug
> Components: Dependencies
> Reporter: Andy Wilkinson
> Fix For: needing-scrub-3.4.0-fallout
>
> Attachments: pom.xml, test-scope-problem.zip
>
>
> I'm seeing some strange behaviour where the transitive dependencies of a
> test-scope dependency are causing transitive dependencies of a compile-scope
> dependency to become test-scoped.
> A pom with a single dependency on {{org.eclipse.jetty:jetty-webapp}} produces
> the following dependencies:
> {noformat}
> $ mvn dependency:tree | grep org.eclipse.jetty:
> [INFO] \- org.eclipse.jetty:jetty-webapp:jar:8.1.10.v20130312:compile
> [INFO] +- org.eclipse.jetty:jetty-xml:jar:8.1.10.v20130312:compile
> [INFO] | \- org.eclipse.jetty:jetty-util:jar:8.1.10.v20130312:compile
> [INFO] \- org.eclipse.jetty:jetty-servlet:jar:8.1.10.v20130312:compile
> [INFO] \- org.eclipse.jetty:jetty-security:jar:8.1.10.v20130312:compile
> [INFO] \- org.eclipse.jetty:jetty-server:jar:8.1.10.v20130312:compile
> [INFO] +-
> org.eclipse.jetty:jetty-continuation:jar:8.1.10.v20130312:compile
> [INFO] \-
> org.eclipse.jetty:jetty-http:jar:8.1.10.v20130312:compile
> [INFO] \-
> org.eclipse.jetty:jetty-io:jar:8.1.10.v20130312:compile
> {noformat}
> If I now add a test dependency on {{org.apache.solr:sole-core}}, a number of
> dependencies that were previously in the compile scope are now in the test
> scope:
> {noformat}
> $ mvn dependency:tree | grep org.eclipse.jetty:
> [INFO] +- org.eclipse.jetty:jetty-webapp:jar:8.1.10.v20130312:compile
> [INFO] | +- org.eclipse.jetty:jetty-xml:jar:8.1.10.v20130312:compile
> [INFO] | \- org.eclipse.jetty:jetty-servlet:jar:8.1.10.v20130312:compile
> [INFO] +- org.eclipse.jetty:jetty-continuation:jar:8.1.10.v20130312:test
> [INFO] +- org.eclipse.jetty:jetty-deploy:jar:8.1.10.v20130312:test
> [INFO] +- org.eclipse.jetty:jetty-http:jar:8.1.10.v20130312:test
> [INFO] +- org.eclipse.jetty:jetty-io:jar:8.1.10.v20130312:test
> [INFO] +- org.eclipse.jetty:jetty-jmx:jar:8.1.10.v20130312:test
> [INFO] +- org.eclipse.jetty:jetty-security:jar:8.1.10.v20130312:compile
> [INFO] +- org.eclipse.jetty:jetty-server:jar:8.1.10.v20130312:test
> [INFO] +- org.eclipse.jetty:jetty-util:jar:8.1.10.v20130312:compile
> {noformat}
> My understanding is that this is because the shortest route to the root of
> the hierarchy wins and, for a number of the Jetty dependencies, the shortest
> route is via the test-scoped {{org.apache.solr:sole-core}}. I can understand
> a test-scoped dependency being upgraded to the compile scope when a
> dependency is added, but downgrading a dependency from the compile scope to
> the test scope feels broken to me.
> I can work around the problem by using dependency management to force the
> dependencies into the compile scope, or by declaring direct dependencies on
> the transitive dependencies of {{org.eclipse.jetty:jetty-webapp}}, but both
> approaches require me to know what all those dependencies are and "duplicate"
> them in my pom, undermining the value of the dependencies being pulled in
> transitively in the first place.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)