diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java index 4547c66cb6..8f26cc7d99 100644 --- a/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java +++ b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java @@ -274,6 +274,15 @@ else if ( currentRange == null ) } ResolutionGroup rGroup = source.retrieve( artifact, localRepository, remoteRepositories ); + + //TODO might be better to have source.retreive() throw a specific exception for this situation + //and catch here rather than have it return null + if ( rGroup == null ) + { + //relocated dependency artifact is declared excluded, no need to add and recurse further + continue; + } + child.addDependencies( rGroup.getArtifacts(), rGroup.getResolutionRepositories(), filter ); } catch ( CyclicDependencyException e ) diff --git a/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java b/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java index 77f2304cbd..b31f273eb9 100644 --- a/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java +++ b/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java @@ -155,6 +155,12 @@ public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository localRepo artifact.setVersion( relocation.getVersion() ); } + if ( artifact.getDependencyFilter() != null && + !artifact.getDependencyFilter().include( artifact ) ) + { + return null; + } + String message = "\n This artifact has been relocated to " + artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getVersion() + ".\n"; @@ -199,8 +205,8 @@ public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository localRepo // or used the inherited scope (should that be passed to the buildFromRepository method above?) try { - artifacts = - project.createArtifacts( artifactFactory, artifact.getScope(), artifact.getDependencyFilter() ); + artifacts = project.createArtifacts( artifactFactory, artifact.getScope(), + artifact.getDependencyFilter() ); } catch ( InvalidDependencyVersionException e ) {