From da7d46646bbd3c7d719c3cf631f0562eff9077ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=98=A5=E6=99=96?= <18220699480@163.com> Date: Wed, 31 Dec 2025 15:26:17 +0800 Subject: [PATCH 1/2] Improve error message for unresolved expressions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 高春晖 <18220699480@163.com> --- .../maven/impl/DefaultDependencyResolver.java | 58 ++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolver.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolver.java index 4e955f090110..28d5806834b5 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolver.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolver.java @@ -174,7 +174,8 @@ public DependencyResolverResult collect(@Nonnull DependencyResolverRequest reque session.getNode(result.getRoot(), request.getVerbose()), 0); } catch (DependencyCollectionException e) { - throw new DependencyResolverException("Unable to collect dependencies", e); + String enhancedMessage = enhanceCollectionError(e, collectRequest); + throw new DependencyResolverException(enhancedMessage, e); } } finally { RequestTraceHelper.exit(trace); @@ -274,4 +275,59 @@ public DependencyResolverResult resolve(DependencyResolverRequest request) private static DependencyResolverException cannotReadModuleInfo(final Path path, final IOException cause) { return new DependencyResolverException("Cannot read module information of " + path, cause); } + + private static boolean containsUnresolvedExpression(String value) { + return value != null && value.contains("${") && value.contains("}"); + } + + private static String enhanceCollectionError(DependencyCollectionException e, CollectRequest request) { + if (e.getMessage() != null && e.getMessage().contains("Invalid Collect Request")) { + StringBuilder enhanced = new StringBuilder(); + enhanced.append("Failed to collect dependencies"); + + org.eclipse.aether.graph.Dependency root = request.getRoot(); + if (root != null && root.getArtifact() != null) { + org.eclipse.aether.artifact.Artifact artifact = root.getArtifact(); + String groupId = artifact.getGroupId(); + String artifactId = artifact.getArtifactId(); + String version = artifact.getVersion(); + + if (containsUnresolvedExpression(groupId) || containsUnresolvedExpression(artifactId) + || containsUnresolvedExpression(version)) { + enhanced.append(" due to unresolved expression(s) in dependency: ") + .append(groupId) + .append(":") + .append(artifactId) + .append(":") + .append(version) + .append(".\n") + .append("Please check that all properties are defined in your POM or settings.xml."); + return enhanced.toString(); + } + } + + for (org.eclipse.aether.graph.Dependency dep : request.getDependencies()) { + if (dep != null && dep.getArtifact() != null) { + org.eclipse.aether.artifact.Artifact artifact = dep.getArtifact(); + String groupId = artifact.getGroupId(); + String artifactId = artifact.getArtifactId(); + String version = artifact.getVersion(); + + if (containsUnresolvedExpression(groupId) || containsUnresolvedExpression(artifactId) + || containsUnresolvedExpression(version)) { + enhanced.append(" due to unresolved expression(s) in dependency: ") + .append(groupId) + .append(":") + .append(artifactId) + .append(":") + .append(version) + .append(".\n") + .append("Please check that all properties are defined in your POM or settings.xml."); + return enhanced.toString(); + } + } + } + } + return e.getMessage(); + } } From 1bafff229616ee1732a798d6296f79678e6a430e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=98=A5=E6=99=96?= <18220699480@163.com> Date: Tue, 13 Jan 2026 21:00:01 +0800 Subject: [PATCH 2/2] Fix Spotless formatting violations Adjust if statement formatting to comply with project code style: - Split OR conditions onto separate lines with proper indentation - Ensures consistency with Spotless formatting rules --- .../org/apache/maven/impl/DefaultDependencyResolver.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolver.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolver.java index 28d5806834b5..f2dab2311298 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolver.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolver.java @@ -292,7 +292,8 @@ private static String enhanceCollectionError(DependencyCollectionException e, Co String artifactId = artifact.getArtifactId(); String version = artifact.getVersion(); - if (containsUnresolvedExpression(groupId) || containsUnresolvedExpression(artifactId) + if (containsUnresolvedExpression(groupId) + || containsUnresolvedExpression(artifactId) || containsUnresolvedExpression(version)) { enhanced.append(" due to unresolved expression(s) in dependency: ") .append(groupId) @@ -313,7 +314,8 @@ private static String enhanceCollectionError(DependencyCollectionException e, Co String artifactId = artifact.getArtifactId(); String version = artifact.getVersion(); - if (containsUnresolvedExpression(groupId) || containsUnresolvedExpression(artifactId) + if (containsUnresolvedExpression(groupId) + || containsUnresolvedExpression(artifactId) || containsUnresolvedExpression(version)) { enhanced.append(" due to unresolved expression(s) in dependency: ") .append(groupId)