[ 
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)

Reply via email to