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.apache.maven:maven-artifact" );
62 artifacts.add( "org.apache.maven:maven-aether-provider" );
63 artifacts.add( "org.apache.maven:maven-artifact-manager" );
64 artifacts.add( "org.apache.maven:maven-compat" );
65 artifacts.add( "org.apache.maven:maven-core" );
66 artifacts.add( "org.apache.maven:maven-error-diagnostics" );
67 artifacts.add( "org.apache.maven:maven-lifecycle" );
68 artifacts.add( "org.apache.maven:maven-model" );
69 artifacts.add( "org.apache.maven:maven-model-builder" );
70 artifacts.add( "org.apache.maven:maven-monitor" );
71 artifacts.add( "org.apache.maven:maven-plugin-api" );
72 artifacts.add( "org.apache.maven:maven-plugin-descriptor" );
73 artifacts.add( "org.apache.maven:maven-plugin-parameter-documenter" );
74 artifacts.add( "org.apache.maven:maven-plugin-registry" );
75 artifacts.add( "org.apache.maven:maven-profile" );
76 artifacts.add( "org.apache.maven:maven-project" );
77 artifacts.add( "org.apache.maven:maven-repository-metadata" );
78 artifacts.add( "org.apache.maven:maven-settings" );
79 artifacts.add( "org.apache.maven:maven-settings-builder" );
80 artifacts.add( "org.apache.maven:maven-toolchain" );
81 artifacts.add( "org.apache.maven.wagon:wagon-provider-api" );
82 artifacts.add( "org.sonatype.aether:aether-api" );
83 artifacts.add( "org.sonatype.aether:aether-spi" );
84 artifacts.add( "org.sonatype.aether:aether-impl" );
85
86
87
88
89
90
91
92
93 DEFAULT_EXCLUSIONS = Collections.unmodifiableSet( artifacts);
94 }
95
96 protected Set<String> excludedArtifacts = new HashSet<String>( DEFAULT_EXCLUSIONS );
97
98
99
100
101 public static ArtifactFilter createStandardFilter()
102 {
103
104 return new ExclusionSetFilter( DEFAULT_EXCLUSIONS );
105 }
106
107
108
109
110
111
112 public ArtifactFilter getArtifactFilter()
113 {
114 Set<String> excludes = new LinkedHashSet<String>( excludedArtifacts );
115
116 for ( ArtifactFilterManagerDelegate delegate : getDelegates() )
117 {
118 delegate.addExcludes( excludes );
119 }
120
121 return new ExclusionSetFilter( excludes );
122 }
123
124
125
126
127
128
129 public ArtifactFilter getCoreArtifactFilter()
130 {
131 return new ExclusionSetFilter( getCoreArtifactExcludes() );
132 }
133
134 private List<ArtifactFilterManagerDelegate> getDelegates()
135 {
136 try
137 {
138 return plexus.lookupList( ArtifactFilterManagerDelegate.class );
139 }
140 catch ( ComponentLookupException e )
141 {
142 return new ArrayList<ArtifactFilterManagerDelegate>();
143 }
144 }
145
146
147
148
149 public void excludeArtifact( String artifactId )
150 {
151 excludedArtifacts.add( artifactId );
152 }
153
154 public Set<String> getCoreArtifactExcludes()
155 {
156 Set<String> excludes = new LinkedHashSet<String>( DEFAULT_EXCLUSIONS );
157
158 for ( ArtifactFilterManagerDelegate delegate : getDelegates() )
159 {
160 delegate.addCoreExcludes( excludes );
161 }
162
163 return excludes;
164 }
165
166 }