From bb140a0ed2f6d655deb26d34ed946dc9247bb825 Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Wed, 28 Sep 2016 16:29:23 +0300 Subject: [PATCH] IDEA-161632 Maven: with multiple dependency occurrences the order of dependencies is wrong --- .../server/Maven3ServerEmbedderImpl.java | 26 +++++-------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3ServerEmbedderImpl.java b/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3ServerEmbedderImpl.java index b07b12e6d64f..d424b26c5065 100644 --- a/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3ServerEmbedderImpl.java +++ b/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3ServerEmbedderImpl.java @@ -683,31 +683,17 @@ public class Maven3ServerEmbedderImpl extends Maven3ServerEmbedder { final DependencyResolutionResult dependencyResolutionResult = resolveDependencies(project, repositorySession); final List dependencies = dependencyResolutionResult.getDependencies(); - final Map winnerDependencyMap = new HashMap(); + final Map winnerDependencyMap = new IdentityHashMap(); Set artifacts = new LinkedHashSet(dependencies.size()); dependencyResolutionResult.getDependencyGraph().accept(new TreeDependencyVisitor(new DependencyVisitor() { @Override public boolean visitEnter(org.eclipse.aether.graph.DependencyNode node) { - Artifact winnerArtifact = null; - final Map data = node.getData(); - final Object winner = data.get(ConflictResolver.NODE_DATA_WINNER); - if(winner instanceof org.eclipse.aether.graph.DependencyNode) { - org.eclipse.aether.graph.DependencyNode winnerNode = (org.eclipse.aether.graph.DependencyNode)winner; - if(!StringUtil.equals(node.getVersion().toString(), winnerNode.getVersion().toString())) { - Dependency winnerNodeDependency = winnerNode.getDependency(); - winnerArtifact = RepositoryUtils.toArtifact(winnerNodeDependency.getArtifact()); - winnerArtifact.setScope(winnerNodeDependency.getScope()); - winnerArtifact.setOptional(winnerNodeDependency.isOptional()); - } - } - + final Object winner = node.getData().get(ConflictResolver.NODE_DATA_WINNER); final Dependency dependency = node.getDependency(); - if(dependency != null) { - if(winnerArtifact == null) { - winnerArtifact = RepositoryUtils.toArtifact(node.getArtifact()); - winnerArtifact.setScope(dependency.getScope()); - winnerArtifact.setOptional(dependency.isOptional()); - } + if (dependency != null && winner == null) { + Artifact winnerArtifact = RepositoryUtils.toArtifact(node.getArtifact()); + winnerArtifact.setScope(dependency.getScope()); + winnerArtifact.setOptional(dependency.isOptional()); winnerDependencyMap.put(dependency, winnerArtifact); } return true;