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