[ 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


Reply via email to