diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/view/ExternalSystemViewDefaultContributor.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/view/ExternalSystemViewDefaultContributor.java index d6cec494d45c..512f421bcbb3 100644 --- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/view/ExternalSystemViewDefaultContributor.java +++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/view/ExternalSystemViewDefaultContributor.java @@ -243,7 +243,26 @@ public class ExternalSystemViewDefaultContributor extends ExternalSystemViewCont return order1 < order2 ? -1 : 1; } } - return super.compareTo(node); + + String dependencyName = getDependencySimpleName(this); + String thatDependencyName = getDependencySimpleName(node); + return StringUtil.compare(dependencyName, thatDependencyName, true); + } + + @NotNull + private static String getDependencySimpleName(@NotNull ExternalSystemNode node) { + Object thatData = node.getData(); + if (thatData instanceof LibraryDependencyData) { + LibraryDependencyData dependencyData = (LibraryDependencyData)thatData; + String externalName = dependencyData.getExternalName(); + if (StringUtil.isEmpty(externalName)) { + Set paths = dependencyData.getTarget().getPaths(LibraryPathType.BINARY); + if (paths.size() == 1) { + return new File(paths.iterator().next()).getName(); + } + } + } + return node.getName(); } }