View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
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.project.MavenProject;
27  import org.codehaus.plexus.util.FileUtils;
28  
29  /**
30   * Deletes the config files used by Rad-6. the files .j2ee and the file .websettings
31   * 
32   * @author <a href="mailto:nir@cfc.at">Richard van Nieuwenhoven</a>
33   * @goal rad-clean
34   */
35  public class RadCleanMojo
36      extends EclipseCleanMojo
37  {
38      /**
39       * The project whose project files to clean.
40       * 
41       * @parameter expression="${project}"
42       * @required
43       * @readonly
44       */
45      private MavenProject project;
46  
47      protected void cleanExtras()
48          throws MojoExecutionException
49      {
50          delete( new File( getBasedir(), ".j2ee" ) );
51          delete( new File( getBasedir(), ".websettings" ) );
52          delete( new File( getBasedir(), ".website-config" ) );
53  
54          handleLibs();
55      }
56  
57      /**
58       * getter for the instancevarriable project.
59       * 
60       * @return the maven project decriptor
61       */
62      public MavenProject getProject()
63      {
64          return this.project;
65      }
66  
67      /**
68       * getter for the instancevarriable project.
69       * 
70       * @param project the maven project decriptor
71       */
72      public void setProject( MavenProject project )
73      {
74          this.project = project;
75      }
76  
77      /**
78       * Delete all jars in the EAR project root directory.
79       * 
80       * @throws MojoExecutionException only if a file exists and can't be deleted
81       */
82      private void handleEarLibs()
83          throws MojoExecutionException
84      {
85          File targetDir = this.project.getBasedir();
86          deleteJarArtifactsInDirectory( targetDir );
87      }
88  
89      /**
90       * Delete all jars in the project that were required by rad6.
91       * 
92       * @throws MojoExecutionException only if a file exists and can't be deleted
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      * Delete all jars in the WAR project WEB-INF/lib directory.
110      * 
111      * @throws MojoExecutionException only if a file exists and can't be deleted
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", //$NON-NLS-1$
121                                                  "src/main/webapp" ) ); //$NON-NLS-1$
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      * delete all Jar artifacts in the specified directory.
137      * 
138      * @param directory to delete the jars from
139      * @throws MojoExecutionException only if a file exists and can't be deleted
140      */
141     protected void deleteJarArtifactsInDirectory( File directory )
142         throws MojoExecutionException
143     {
144         String[] oldFiles =
145             FileUtils.getFilesFromExtension( directory.getAbsolutePath(),
146                                              new String[] { Constants.PROJECT_PACKAGING_JAR } );
147         for ( int index = 0; index < oldFiles.length; index++ )
148         {
149             File f = new File( oldFiles[index] );
150 
151             delete( f );
152         }
153     }
154 }