You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Benjamin Bentmann (JIRA)" <ji...@codehaus.org> on 2010/11/21 17:29:04 UTC

[jira] Closed: (MNG-4675) Compile scoped dependencies replaced by test

     [ http://jira.codehaus.org/browse/MNG-4675?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Benjamin Bentmann closed MNG-4675.
----------------------------------

       Resolution: Cannot Reproduce
    Fix Version/s:     (was: Issues to be reviewed for 3.x)
         Assignee: Benjamin Bentmann

> Compile scoped dependencies replaced by test
> --------------------------------------------
>
>                 Key: MNG-4675
>                 URL: http://jira.codehaus.org/browse/MNG-4675
>             Project: Maven 2 & 3
>          Issue Type: Bug
>          Components: Dependencies
>    Affects Versions: 2.2.1
>         Environment: Windows XP
>            Reporter: Siam Rafiee
>            Assignee: Benjamin Bentmann
>         Attachments: MNG-4675.zip
>
>
> Maven doesn't consider scopes correctly when applying the "nearest definition" rule on competing dependency definitions.
> We experienced an issue where a transitive compile time dependency on antlr was clobbered to test scope since a test framework artifact (at test scope) had also declared a dependency on antlr.
> <dependencies>
> <dependency>
> <!-- some dependency that transitively pulls in antlr 3 levels deep -->
> <scope>compile</scope>
> </dependency>
> <dependency>
> <!-- some test framework dependency that transitively pulls in antlr 2 levels deep -->
> <scope>test</scope>
> </dependency>
> </dependencies>
> Since the test framework pulls in antlr at a shallower depth, it takes priority, but also clobbers antlr's scope to 'test'. Thus, the first declared library will now fail to function correctly at runtime since the required antlr jar hasn't been packaged.
> Since the module is unaware whether it needs antlr at all, it doesn't make sense for it to declare it directly as a dependency or even in a dependency management section. 
> If a module requires an artifact at compile time at any depth, the scope should default to 'compile', and not be replaced by 'test' by competing dependency definitions.

-- 
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