[ https://issues.apache.org/jira/browse/MNG-5980?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16998616#comment-16998616 ]
Robert Scholte commented on MNG-5980: ------------------------------------- Based on the title of this issue, this is indeed not a bug, but works as intended. However, there is something weird: the version resolution is unrelated to dependency order. Hence I created MNG-6357 which should align these (as people would expect) I am aware of Thomas his opinion, but this is all based on wildcards and unpredictable order of files in a directory as even defined in the javadocs (Quote from [File.list()|https://docs.oracle.com/javase/7/docs/api/java/io/File.html#list()]: There is no guarantee that the name strings in the resulting array will appear in any specific order; they are not, in particular, guaranteed to appear in alphabetical order.) However, Maven only works with explicit files, so the order is predictable. A randomized classpath (or simply reversing, which might be an interesting feature) probably would have broken quite some projects. Within the scope of Maven it is good that users can control the order, and there are enforcer-rules that can prevent you from classpath collisions. As this issue is closed, we should not discuss it here anymore. > 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)