[ 
https://issues.apache.org/jira/browse/MNG-5980?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16997292#comment-16997292
 ] 

elharo commented on MNG-5980:
-----------------------------

If we don't document the order dependency, that would be a good bug against 
MVNSITE. However classpaths are by their nature ordered and the specific 
algorithm by which dependency trees are converted into classpaths is baked 
pretty firmly into Maven itself and most projects built with it. I don't think 
we could change it now.

 

Per 
[https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html]
 (which is confusing, and I need to rewrite)

 

I don't think we say there that if dependency A comes before dependency B in 
pom.xml then the classpath looks like A:B and not B:A

 

We probably should.

> DependencyGraphBuilder gives different results depending on the order of 
> dependencies in the pom
> ------------------------------------------------------------------------------------------------
>
>                 Key: MNG-5980
>                 URL: https://issues.apache.org/jira/browse/MNG-5980
>             Project: Maven
>          Issue Type: Bug
>          Components: Dependencies, Plugin API
>         Environment: Kubuntu 14.10
> Java 8
> Maven 3.0.5/3.3.9
> maven-dependency-tree 2.1/3.0
>            Reporter: Gerrit Daniels
>            Priority: Major
>         Attachments: dependency-graph-builder-bug.zip
>
>
> I'm getting different results when using DependencyGraphBuilder in a plugin 
> depending on the order in which the dependencies are defined in the pom of 
> the project the plugin is running on. I have created some test projects to 
> reproduce the bug.
> - actual-dependency: This is the dependency that moves when changing the 
> order in the pom.
> - test-dependency: Depends on the actual-dependency with compile scope.
> - compile-dependency: Also depends on the actual-dependency with compile 
> scope.
> - main-project: Depends on the test-dependency with test scope and on the 
> compile-dependency with compile scope. Has the plugin configured.
> - plugin: Builds the dependency graph.
> When running maven with the -X switch on the main project with the 
> test-dependency declared first in the pom I get the following dependency 
> graph:
> {code}
> [DEBUG] com.qmino:main-project:jar:1.0-SNAPSHOT
> [DEBUG]    com.qmino:test-dependency:jar:1.0-SNAPSHOT:test
> [DEBUG]       com.qmino:actual-dependency:jar:1.0-SNAPSHOT:compile
> [DEBUG]    com.qmino:compile-dependency:jar:1.0-SNAPSHOT:compile
> {code}
> When I change the order of the dependencies I get:
> {code}
> [DEBUG] com.qmino:main-project:jar:1.0-SNAPSHOT
> [DEBUG]    com.qmino:compile-dependency:jar:1.0-SNAPSHOT:compile
> [DEBUG]       com.qmino:actual-dependency:jar:1.0-SNAPSHOT:compile
> [DEBUG]    com.qmino:test-dependency:jar:1.0-SNAPSHOT:test
> {code}
> It seems to me that the order of the dependencies shouldn't change the 
> results. In both cases I would expect the second output, since the compile 
> scope should overrule the test scope.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to