diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/resolver/DefaultArtifactDescriptorReader.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/resolver/DefaultArtifactDescriptorReader.java index 0b2badca84bd..88d168cccf84 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/resolver/DefaultArtifactDescriptorReader.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/resolver/DefaultArtifactDescriptorReader.java @@ -113,6 +113,7 @@ public ArtifactDescriptorResult readArtifactDescriptor( } delegate.populateResult(InternalSession.from(session), result, model); + filterUninterpolatedDependencies(result); } return result; @@ -331,4 +332,38 @@ private int getPolicy(RepositorySystemSession session, Artifact a, ArtifactDescr } return policy.getPolicy(session, new ArtifactDescriptorPolicyRequest(a, request.getRequestContext())); } + + private void filterUninterpolatedDependencies(ArtifactDescriptorResult result) { + result.getRepositories().removeIf(repo -> { + if (containsPlaceholder(repo.getId()) || containsPlaceholder(repo.getUrl())) { + logger.debug("Filtered repository with uninterpolated expression: {}", repo); + return true; + } + return false; + }); + result.getDependencies().removeIf(dep -> { + if (hasUninterpolatedExpression(dep.getArtifact())) { + logger.debug("Filtered dependency with uninterpolated expression: {}", dep); + return true; + } + return false; + }); + result.getManagedDependencies().removeIf(dep -> { + if (hasUninterpolatedExpression(dep.getArtifact())) { + logger.debug("Filtered managed dependency with uninterpolated expression: {}", dep); + return true; + } + return false; + }); + } + + private static boolean hasUninterpolatedExpression(Artifact artifact) { + return containsPlaceholder(artifact.getGroupId()) + || containsPlaceholder(artifact.getArtifactId()) + || containsPlaceholder(artifact.getVersion()); + } + + private static boolean containsPlaceholder(String value) { + return value != null && value.contains("${"); + } }