1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.maven.archetype.mojos.registry;
21
22 import org.apache.maven.archetype.common.ArchetypeRegistryManager;
23 import org.apache.maven.archetype.registry.ArchetypeRegistry;
24 import org.apache.maven.plugin.AbstractMojo;
25 import org.apache.maven.plugin.MojoExecutionException;
26 import org.apache.maven.plugin.MojoFailureException;
27 import org.codehaus.plexus.util.StringUtils;
28
29 import java.io.File;
30 import java.io.FileNotFoundException;
31 import java.util.ArrayList;
32 import java.util.Arrays;
33 import java.util.Iterator;
34 import java.util.List;
35
36
37
38
39
40
41
42
43
44
45
46
47 public class RemoveExtensionsMojo
48 extends AbstractMojo
49 {
50
51 ArchetypeRegistryManager archetypeRegistryManager;
52
53
54
55
56
57
58
59
60 String extension;
61
62
63
64
65
66
67
68
69 String extensions;
70
71
72
73
74
75
76 private File archetypeRegistryFile;
77
78 public void execute()
79 throws
80 MojoExecutionException,
81 MojoFailureException
82 {
83 if ( StringUtils.isEmpty( extension ) && StringUtils.isEmpty( extensions ) )
84 {
85 throw new MojoFailureException( "-Dextension or -Dextensions must be set" );
86 }
87 else if ( StringUtils.isNotEmpty( extension ) && StringUtils.isNotEmpty( extensions ) )
88 {
89 throw new MojoFailureException( "Only one of -Dextension or -Dextensions can be set" );
90 }
91
92 try
93 {
94 List extensionsToRemove = new ArrayList();
95 if ( StringUtils.isNotEmpty( extension ) )
96 {
97 extensionsToRemove.add( extension );
98 }
99 else
100 {
101 extensionsToRemove.addAll(
102 Arrays.asList( StringUtils.split( extensions, "," ) )
103 );
104 }
105
106 ArchetypeRegistry registry;
107 try
108 {
109 registry = archetypeRegistryManager.readArchetypeRegistry( archetypeRegistryFile );
110 }
111 catch ( FileNotFoundException ex )
112 {
113 registry = archetypeRegistryManager.getDefaultArchetypeRegistry();
114 }
115
116 Iterator extensionsToRemoveIterator = extensionsToRemove.iterator();
117 while ( extensionsToRemoveIterator.hasNext() )
118 {
119 String extensionToRemove = (String) extensionsToRemoveIterator.next();
120 if ( registry.getFilteredExtensions().contains( extensionToRemove ) )
121 {
122 registry.removeFilteredExtension( extensionToRemove );
123 getLog().debug( "Extension " + extensionToRemove + " removed" );
124 }
125 else
126 {
127 getLog().debug( "Extension " + extensionToRemove + " doesn't exist" );
128 }
129 }
130 archetypeRegistryManager.writeArchetypeRegistry( archetypeRegistryFile, registry );
131 }
132 catch ( Exception ex )
133 {
134 throw new MojoExecutionException( ex.getMessage(), ex );
135 }
136 }
137 }