diff --git a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/transformer/PathConflictResolver.java b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/transformer/PathConflictResolver.java index 0f81c668c4..289a06a84e 100644 --- a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/transformer/PathConflictResolver.java +++ b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/transformer/PathConflictResolver.java @@ -40,6 +40,9 @@ import org.eclipse.aether.graph.DependencyNode; import org.eclipse.aether.util.ConfigUtils; import org.eclipse.aether.util.artifact.ArtifactIdUtils; +import org.eclipse.aether.util.graph.manager.DependencyManagerUtils; +import org.eclipse.aether.util.version.GenericVersionScheme; +import org.eclipse.aether.version.Version; import static java.util.Objects.requireNonNull; @@ -448,6 +451,17 @@ private void derive(int levels, boolean winner) throws RepositoryException { this.optional = true; } } + if (dn.isManagedSubject(DependencyManagement.Subject.VERSION) + && !dn.isManagedSubjectEnforced(DependencyManagement.Subject.VERSION)) { + String premanagedVersion = DependencyManagerUtils.getPremanagedVersion(this.dn); + if (premanagedVersion != null) { + Version currentVersion = this.dn.getVersion(); + Version originalVersion = new GenericVersionScheme().parseVersion(premanagedVersion); + if (currentVersion.compareTo(originalVersion) < 0) { + this.dn.setArtifact(this.dn.getArtifact().setVersion(premanagedVersion)); + } + } + } } else { this.scope = ""; this.optional = false;