maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Benjamin Bentmann (JIRA)" <j...@codehaus.org>
Subject [jira] Commented: (MNG-4690) Transitive dependency lost when included another dependency
Date Tue, 24 Aug 2010 18:27:32 GMT

    [ http://jira.codehaus.org/browse/MNG-4690?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=232974#action_232974
] 

Benjamin Bentmann commented on MNG-4690:
----------------------------------------

The dirty tree for the ui modules looks like this:
{noformat}
test:ui:1
+- test:model:1
|  \- test:common:1
|     \- test.lib:lib2:1
|        \- antlr:antlr:2.7.6          <--\
+- test.lib:lib3:1                        |
|  \- test.lib:lib1:2        <--\         |(a)
|     \- antlr:antlr:2.7.2      |(b)   ---/
\- test.lib:lib1:1           ---/
{noformat}
For conflict resolution, Maven basically performs a DFS on this tree. When visiting antlr:2.7.2
it eliminates antlr:2.7.6 (a) and when visiting lib1:1 it eliminates lib1:2 (b). Unfortunately,
this last step also eliminates the last path to antlr, i.e. antlr:2.7.6 is not reenabled.

Moving lib1:1 before lib3:1 is a possible workaround for the missing back-tracking in the
conflict resolution.

> Transitive dependency lost when included another dependency
> -----------------------------------------------------------
>
>                 Key: MNG-4690
>                 URL: http://jira.codehaus.org/browse/MNG-4690
>             Project: Maven 2 & 3
>          Issue Type: Bug
>          Components: Dependencies
>         Environment: maven 2.0.10 (tried with dependency plugin 2.0 and 2.1)
>            Reporter: Michal Ropka
>         Attachments: test.zip, test2.zip
>
>
> *We added a new dependency (_velocity-tools_) and the project didn't work any more. We've
found that one transitive library (_antlr_ used by _struts_ and _hibernate_) is missing in
the installed WAR file.*
> It looks like the _antlr_ transitive dependency is ignored from _hibernate_ dependencies
by plugin choosing _struts-1.2.9_ one while eventually _struts_ is replaced by _1.2.7_ version
which does not have _antlr_ dependency.
> There is a workaround to the problem - dependencies might be rearranged to include the
missing library back (e.g. by moving _struts-1.2.7_ from _parent_ to _ui_ but only before
_velocity-tools_ - see the test case) however the problem is that the plugin behavior is unpredictable.
> *Test case:*
> There are root, parent, common, model, ui POM files. The purpose is to create dependency
tree deep enough (_ui_ depends on _model_ and inherits from _parent_, _model_ depends on _common_).
They include external dependencies (_velocity-tools_, _struts_, _hibernate_).
> * WAR artifact created from the root or _ui_ POM does not contain _antlr_ in WEB-INF/lib
which is required by _hibernate_
> * after removing _velocity-tools_ from ui/pom.xml _antlr_ library is included properly

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

        

Mime
View raw message