1 package org.apache.maven.plugins.dependency.resolvers;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.artifact.ArtifactUtils;
23 import org.apache.maven.model.Dependency;
24 import org.apache.maven.plugin.logging.Log;
25 import org.apache.maven.project.MavenProject;
26 import org.apache.maven.shared.artifact.filter.resolve.AbstractFilter;
27 import org.apache.maven.shared.artifact.filter.resolve.Node;
28 import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter;
29
30 import java.util.List;
31 import java.util.Set;
32 import java.util.stream.Collectors;
33
34
35
36
37
38
39 public class ExcludeReactorProjectsDependencyFilter extends AbstractFilter
40 {
41 private final Log log;
42 private final Set<String> reactorArtifactKeys;
43
44 public ExcludeReactorProjectsDependencyFilter( final List<MavenProject> reactorProjects, final Log log )
45 {
46 this.log = log;
47 this.reactorArtifactKeys = reactorProjects.stream()
48 .map( project -> ArtifactUtils.key( project.getArtifact() ) )
49 .collect( Collectors.toSet() );
50 }
51
52 @Override
53 public boolean accept( final Node node, final List<Node> parents )
54 {
55 final Dependency dependency = node.getDependency();
56 if ( dependency != null )
57 {
58 final String dependencyArtifactKey = ArtifactUtils.key(
59 dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion() );
60
61 final boolean result = isDependencyArtifactInReactor( dependencyArtifactKey );
62
63 if ( log.isDebugEnabled() && result )
64 {
65 log.debug( "Skipped dependency "
66 + dependencyArtifactKey
67 + " because it is present in the reactor" );
68 }
69
70 return !result;
71 }
72 return true;
73 }
74
75 private boolean isDependencyArtifactInReactor( final String dependencyArtifactKey )
76 {
77 for ( final String reactorArtifactKey : this.reactorArtifactKeys )
78 {
79
80 if ( reactorArtifactKey.equals( dependencyArtifactKey ) )
81 {
82 return true;
83 }
84 }
85 return false;
86 }
87 }