Plugin-level dependency scope causes some plugin classpaths to be incorrect
---------------------------------------------------------------------------

                 Key: MNG-4761
                 URL: http://jira.codehaus.org/browse/MNG-4761
             Project: Maven 2 & 3
          Issue Type: Bug
          Components: Artifacts and Repositories, Plugins and Lifecycle
    Affects Versions: 3.0-beta-1, 2.2.1
            Reporter: John Casey
         Attachments: obscured-nearer-dep.zip

Plugin-level dependencies should use RUNTIME scope at all times. Using any 
other scope may alter the weighting given to the subgraph-choice algorithm used 
in transitive dependency resolution.


Plugin-level dependencies use compile scope by default. When transitive 
resolution takes place, compile scope takes precedence over runtime scope, 
causing the transitive dependency sub-graph of the plugin-level dependency to 
be activated over those of the plugin itself.

This happens even when the plugin's transitive dep is NEARER to the top level 
than the one brought in by that plugin-level dependency itself.

The result is that when a dep that's farther away is chosen over a nearer one, 
it can then be disabled by Maven choosing to disable its parent dep (the one 
that brought it in) in another part of the transitive resolution process.

This is a very subtle case where Maven is doing the wrong thing. The attached 
test case should make it clearer.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to