Marrache created MNG-5229:
-----------------------------

             Summary: Improvement of nearest-wins strategy
                 Key: MNG-5229
                 URL: https://jira.codehaus.org/browse/MNG-5229
             Project: Maven 2 & 3
          Issue Type: Improvement
          Components: Dependencies
    Affects Versions: 3.0.3
            Reporter: Marrache


I have a project A that uses library L v1.0.0 with test scope.

Project A also depends on project B (with scope compile), with B transitively 
depending
on the library L v1.0.0 (with scope compile). So, according to the 
documentation (Introduction
to dependency mechanism), project A depends on project B with scope "compile" 
and the transitive
dependency on L has a "compile" scope, the final scope of L should be "compile".

Here, Maven sees one dependency on L with scope "compile" (after applying the 
dependency
algorithm), and one dependency on L with scope "test". And because the second 
is nearest to the root (project A), it chooses it, so with a 'test' scope. Why 
the final scope of the library
L for project A is not 'compile'?

My project A only uses L for unit tests so I define the dependency
with 'test' scope. But, at the end, I want L to be on my classpath since 
project A depends
on project B for production, and B needs (transitively) library L also for 
production. (By
production, I mean not unit tests.)

Unless I'm missing something, I think that the good behavior would be to choose 
the compile scope.

I open this issue after asking in the mailing list at this link 
http://mail-archives.apache.org/mod_mbox/maven-users/201201.mbox/%3C6EA53FAD386F9D46B97D49BFE148D5140F14B75E6B%40ISR-JLM-MAIL1.xconnect.co.il%3E

Thanks

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to