maven-issues mailing list archives

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


Benjamin Bentmann commented on MNG-4690:

The dirty tree for the ui modules looks like this:
+- 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           ---/
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:
>             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:,
> *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:
For more information on JIRA, see:


View raw message