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.HashSet;
31 import java.util.List;
32 import java.util.Set;
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 = new HashSet<>( reactorProjects.size() );
48 for ( final MavenProject project : reactorProjects )
49 {
50 this.reactorArtifactKeys.add( ArtifactUtils.key( project.getArtifact() ) );
51 }
52 }
53
54 @Override
55 public boolean accept( final Node node, final List<Node> parents )
56 {
57 final Dependency dependency = node.getDependency();
58 if ( dependency != null )
59 {
60 final String dependencyArtifactKey = ArtifactUtils.key(
61 dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion() );
62
63 final boolean result = isDependencyArtifactInReactor( dependencyArtifactKey );
64
65 if ( log.isDebugEnabled() && result )
66 {
67 log.debug( "Skipped dependency "
68 + dependencyArtifactKey
69 + " because it is present in the reactor" );
70 }
71
72 return !result;
73 }
74 return true;
75 }
76
77 private boolean isDependencyArtifactInReactor( final String dependencyArtifactKey )
78 {
79 for ( final String reactorArtifactKey : this.reactorArtifactKeys )
80 {
81
82 if ( reactorArtifactKey.equals( dependencyArtifactKey ) )
83 {
84 return true;
85 }
86 }
87 return false;
88 }
89 }