1 package org.apache.maven;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.ArrayList;
23 import java.util.Collections;
24 import java.util.HashSet;
25 import java.util.LinkedHashSet;
26 import java.util.List;
27 import java.util.Set;
28
29 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
30 import org.apache.maven.artifact.resolver.filter.ExclusionSetFilter;
31 import org.codehaus.plexus.PlexusContainer;
32 import org.codehaus.plexus.component.annotations.Component;
33 import org.codehaus.plexus.component.annotations.Requirement;
34 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
35
36
37
38
39
40 @Component( role = ArtifactFilterManager.class )
41 public class DefaultArtifactFilterManager
42 implements ArtifactFilterManager
43 {
44
45 private static final Set<String> DEFAULT_EXCLUSIONS;
46
47 @Requirement
48 private PlexusContainer plexus;
49
50 static
51 {
52 Set<String> artifacts = new HashSet<String>();
53
54 artifacts.add( "classworlds:classworlds" );
55 artifacts.add( "org.codehaus.plexus:plexus-classworlds" );
56 artifacts.add( "org.codehaus.plexus:plexus-component-api" );
57 artifacts.add( "org.codehaus.plexus:plexus-container-default" );
58 artifacts.add( "plexus:plexus-container-default" );
59 artifacts.add( "org.sonatype.spice:spice-inject-plexus" );
60 artifacts.add( "org.sonatype.sisu:sisu-inject-plexus" );
61 artifacts.add( "org.eclipse.sisu:org.eclipse.sisu.plexus" );
62 artifacts.add( "org.apache.maven:maven-artifact" );
63 artifacts.add( "org.apache.maven:maven-aether-provider" );
64 artifacts.add( "org.apache.maven:maven-artifact-manager" );
65 artifacts.add( "org.apache.maven:maven-compat" );
66 artifacts.add( "org.apache.maven:maven-core" );
67 artifacts.add( "org.apache.maven:maven-error-diagnostics" );
68 artifacts.add( "org.apache.maven:maven-lifecycle" );
69 artifacts.add( "org.apache.maven:maven-model" );
70 artifacts.add( "org.apache.maven:maven-model-builder" );
71 artifacts.add( "org.apache.maven:maven-monitor" );
72 artifacts.add( "org.apache.maven:maven-plugin-api" );
73 artifacts.add( "org.apache.maven:maven-plugin-descriptor" );
74 artifacts.add( "org.apache.maven:maven-plugin-parameter-documenter" );
75 artifacts.add( "org.apache.maven:maven-plugin-registry" );
76 artifacts.add( "org.apache.maven:maven-profile" );
77 artifacts.add( "org.apache.maven:maven-project" );
78 artifacts.add( "org.apache.maven:maven-repository-metadata" );
79 artifacts.add( "org.apache.maven:maven-settings" );
80 artifacts.add( "org.apache.maven:maven-settings-builder" );
81 artifacts.add( "org.apache.maven:maven-toolchain" );
82 artifacts.add( "org.apache.maven.wagon:wagon-provider-api" );
83 artifacts.add( "org.eclipse.aether:aether-api" );
84 artifacts.add( "org.eclipse.aether:aether-spi" );
85 artifacts.add( "org.eclipse.aether:aether-impl" );
86
87
88
89 artifacts.add( "org.sonatype.aether:aether-api" );
90 artifacts.add( "org.sonatype.aether:aether-spi" );
91 artifacts.add( "org.sonatype.aether:aether-impl" );
92
93
94
95
96
97
98
99
100 DEFAULT_EXCLUSIONS = Collections.unmodifiableSet( artifacts );
101 }
102
103 protected Set<String> excludedArtifacts = new HashSet<String>( DEFAULT_EXCLUSIONS );
104
105
106
107
108 public static ArtifactFilter createStandardFilter()
109 {
110
111 return new ExclusionSetFilter( DEFAULT_EXCLUSIONS );
112 }
113
114
115
116
117
118
119 public ArtifactFilter getArtifactFilter()
120 {
121 Set<String> excludes = new LinkedHashSet<String>( excludedArtifacts );
122
123 for ( ArtifactFilterManagerDelegate delegate : getDelegates() )
124 {
125 delegate.addExcludes( excludes );
126 }
127
128 return new ExclusionSetFilter( excludes );
129 }
130
131
132
133
134
135
136 public ArtifactFilter getCoreArtifactFilter()
137 {
138 return new ExclusionSetFilter( getCoreArtifactExcludes() );
139 }
140
141 private List<ArtifactFilterManagerDelegate> getDelegates()
142 {
143 try
144 {
145 return plexus.lookupList( ArtifactFilterManagerDelegate.class );
146 }
147 catch ( ComponentLookupException e )
148 {
149 return new ArrayList<ArtifactFilterManagerDelegate>();
150 }
151 }
152
153
154
155
156 public void excludeArtifact( String artifactId )
157 {
158 excludedArtifacts.add( artifactId );
159 }
160
161 public Set<String> getCoreArtifactExcludes()
162 {
163 Set<String> excludes = new LinkedHashSet<String>( DEFAULT_EXCLUSIONS );
164
165 for ( ArtifactFilterManagerDelegate delegate : getDelegates() )
166 {
167 delegate.addCoreExcludes( excludes );
168 }
169
170 return excludes;
171 }
172
173 }