1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  package org.apache.maven.plugin.eclipse;
20  
21  import java.io.File;
22  
23  import org.apache.maven.plugin.MojoExecutionException;
24  import org.apache.maven.plugin.ide.IdeUtils;
25  import org.apache.maven.plugin.ide.JeeUtils;
26  import org.apache.maven.plugins.annotations.Mojo;
27  import org.apache.maven.plugins.annotations.Parameter;
28  import org.apache.maven.project.MavenProject;
29  import org.codehaus.plexus.util.FileUtils;
30  
31  
32  
33  
34  
35  
36  @Mojo( name = "rad-clean" )
37  public class RadCleanMojo
38      extends EclipseCleanMojo
39  {
40      
41  
42  
43      @Parameter( property = "project", required = true, readonly = true )
44      private MavenProject project;
45  
46      protected void cleanExtras()
47          throws MojoExecutionException
48      {
49          delete( new File( getBasedir(), ".j2ee" ) );
50          delete( new File( getBasedir(), ".websettings" ) );
51          delete( new File( getBasedir(), ".website-config" ) );
52  
53          handleLibs();
54      }
55  
56      
57  
58  
59  
60  
61      public MavenProject getProject()
62      {
63          return this.project;
64      }
65  
66      
67  
68  
69  
70  
71      public void setProject( MavenProject project )
72      {
73          this.project = project;
74      }
75  
76      
77  
78  
79  
80  
81      private void handleEarLibs()
82          throws MojoExecutionException
83      {
84          File targetDir = this.project.getBasedir();
85          deleteJarArtifactsInDirectory( targetDir );
86          deleteWarArtifactsInDirectory( targetDir );
87      }
88  
89      
90  
91  
92  
93  
94      private void handleLibs()
95          throws MojoExecutionException
96      {
97  
98          if ( Constants.PROJECT_PACKAGING_EAR.equals( getPackaging() ) )
99          {
100             handleEarLibs();
101         }
102         else if ( Constants.PROJECT_PACKAGING_WAR.equals( getPackaging() ) )
103         {
104             handleWarLibs();
105         }
106     }
107 
108     
109 
110 
111 
112 
113     private void handleWarLibs()
114         throws MojoExecutionException
115     {
116         File basedir = this.project.getBasedir();
117 
118         File warSourceDirectory =
119             new File( IdeUtils.getPluginSetting( this.project, JeeUtils.ARTIFACT_MAVEN_WAR_PLUGIN,
120                                                  "warSourceDirectory", 
121                                                  "src/main/webapp" ) ); 
122 
123         String webContentDir = IdeUtils.toRelativeAndFixSeparator( basedir, warSourceDirectory, false );
124 
125         String srcMainWebappWebInfLibDirname =
126             basedir.getAbsolutePath() + File.separatorChar + webContentDir + File.separatorChar + "WEB-INF"
127                 + File.separatorChar + "lib";
128 
129         File srcMainWebappWebInfLibDir = new File( srcMainWebappWebInfLibDirname );
130         srcMainWebappWebInfLibDir.mkdirs();
131 
132         deleteJarArtifactsInDirectory( srcMainWebappWebInfLibDir );
133     }
134 
135     
136 
137 
138 
139 
140 
141     protected void deleteJarArtifactsInDirectory( File directory )
142         throws MojoExecutionException
143     {
144         deleteArtifactsInDirectory( directory, Constants.PROJECT_PACKAGING_JAR );
145     }
146 
147     
148 
149 
150 
151 
152 
153     protected void deleteWarArtifactsInDirectory( File directory )
154         throws MojoExecutionException
155     {
156         deleteArtifactsInDirectory( directory, Constants.PROJECT_PACKAGING_WAR );
157     }
158 
159     
160 
161 
162 
163 
164 
165 
166 
167 
168     private void deleteArtifactsInDirectory( File directory, String packagingType )
169         throws MojoExecutionException
170     {
171 
172         
173         if ( Constants.PROJECT_PACKAGING_JAR.equalsIgnoreCase( packagingType )
174             || Constants.PROJECT_PACKAGING_WAR.equalsIgnoreCase( packagingType ) )
175         {
176             String[] oldFiles =
177                 FileUtils.getFilesFromExtension( directory.getAbsolutePath(), new String[] { packagingType } );
178             for (String oldFile : oldFiles) {
179                 File f = new File(oldFile);
180 
181                 delete(f);
182             }
183         }
184     }
185 }