[ http://jira.codehaus.org/browse/MNG-1577?page=comments#action_77990 ]
Mike Perham commented on MNG-1577:
----------------------------------
I changed this in
src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java
- if ( artifact.getScope() != null )
+ if ( artifact.getScope() != null && node.getArtifact().getScope()
== null )
{
node.getArtifact().setScope( artifact.getScope() );
This fixed my problem above but it still does not work properly with transitive
dependencies that are marked as optional. They become non-optional if listed
in the dependency management section.
A transitive dep has it marked as compile/optional whereas my depMgmt section
has it marked as test/non-optional. At runtime this becomes
compile/non-optional and gets included in my EAR.
Also when I turn on <override>true</override>, my EAR build goes from 8 seconds
to 40 seconds and my -X output goes from 170k to 9MB. I believe this is
because it is parsing the same deps over and over, without caching intermediate
results.
IOW, this patch needs more work.
> dependencyManagement does not work for transitive dependencies
> --------------------------------------------------------------
>
> Key: MNG-1577
> URL: http://jira.codehaus.org/browse/MNG-1577
> Project: Maven 2
> Issue Type: Bug
> Components: Artifacts and Repositories
> Affects Versions: 2.0
> Reporter: Joerg Schaible
> Fix For: 2.1
>
> Attachments: mng1577.patch, mng1577a.patch, mng1577b.patch,
> mng1577trunk.patch
>
>
> The dependencyManagement does not work for transient dependencies. The
> specified version is ignored.
> Use case:
> Main POM defines commons-digester-1.6 and commons-beanutils-1.7.0, A-SNAPSHOT
> and B-SNAPSHOT
> Project A is child of Main and depends directly on commons-beanutils (version
> inherited from Main)
> Project B is child of Main and depends directly on commons-digester (version
> inherited from Main)
> Project C is child of Main and depends directly on A & B (versions inherited
> from Main)
> A is compiled and tests are run using commons-beanutils-1.7.0
> B is compiled and tests are run using commons-digester-1.6 and
> commons-beanutils-1.6, since digester is dependend on this
> C is compiled and tests are run using commons-beanutils-1.7.0
> Integration tests of B did not verify, that B is behaving as expected in this
> scenario. B might fail with 1.7.0 and it is not even recognized.
> If I add beanutils also as direct dependency to B, it works fine, but then
> are transitive dependency useless. It should be possible to define at least
> in the dependencyManagement, that the versions of transient dependencies also
> defined in the dependencyManagement have priority.
> - Jörg
--
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