Author: bentmann
Date: Wed Sep  3 14:32:24 2008
New Revision: 691788

URL: http://svn.apache.org/viewvc?rev=691788&view=rev
Log:
[MCLEAN-31] Always resolve relative path against the project's base directory

Modified:
    
maven/plugins/trunk/maven-clean-plugin/src/main/java/org/apache/maven/plugin/clean/CleanMojo.java

Modified: 
maven/plugins/trunk/maven-clean-plugin/src/main/java/org/apache/maven/plugin/clean/CleanMojo.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-clean-plugin/src/main/java/org/apache/maven/plugin/clean/CleanMojo.java?rev=691788&r1=691787&r2=691788&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-clean-plugin/src/main/java/org/apache/maven/plugin/clean/CleanMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-clean-plugin/src/main/java/org/apache/maven/plugin/clean/CleanMojo.java
 Wed Sep  3 14:32:24 2008
@@ -24,7 +24,6 @@
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.model.fileset.FileSet;
 import org.apache.maven.shared.model.fileset.util.FileSetManager;
-import org.codehaus.plexus.util.StringUtils;
 
 import java.io.File;
 import java.io.IOException;
@@ -200,31 +199,9 @@
         {
             for ( Iterator it = filesets.iterator(); it.hasNext(); )
             {
-                Fileset fileset = (Fileset) it.next();
+                FileSet fileset = (FileSet) it.next();
 
-                try
-                {
-                    getLog().info( "Deleting " + fileset );
-
-                    if ( !project.isExecutionRoot() )
-                    {
-                        String projectBasedir = StringUtils.replace( 
project.getBasedir().getAbsolutePath(),
-                                                                     "\\", "/" 
);
-                        String filesetDir = StringUtils.replace( 
fileset.getDirectory(), "\\", "/" );
-
-                        if ( filesetDir.indexOf( projectBasedir ) == -1 )
-                        {
-                            fileset.setDirectory( projectBasedir + "/" + 
filesetDir );
-                        }
-                    }
-
-                    fileSetManager.delete( fileset, failOnError );
-                }
-                catch ( IOException e )
-                {
-                    throw new MojoExecutionException( "Failed to delete 
directory: " + fileset.getDirectory()
-                        + ". Reason: " + e.getMessage(), e );
-                }
+                removeFileSet( fileset );
             }
         }
     }
@@ -250,27 +227,45 @@
                 throw new MojoExecutionException( dir + " is not a directory." 
);
             }
 
-            FileSet fs = new FileSet();
+            FileSet fs = new Fileset();
             fs.setDirectory( dir.getPath() );
-            fs.addInclude( "**/**" );
+            fs.addInclude( "**" );
             fs.setFollowSymlinks( followSymLinks );
 
-            try
-            {
-                getLog().info( "Deleting directory " + dir.getAbsolutePath() );
-                fileSetManager.delete( fs, failOnError );
-            }
-            catch ( IOException e )
-            {
-                throw new MojoExecutionException( "Failed to delete directory: 
" + dir + ". Reason: " + e.getMessage(),
-                                                  e );
-            }
-            catch ( IllegalStateException e )
+            removeFileSet( fs );
+        }
+    }
+
+    /**
+     * Deletes the specified file set. If the base directory of the file set 
is relative, it will be resolved against
+     * the base directory of the current project.
+     *
+     * @param fileset The file set to delete, must not be <code>null</code>.
+     * @throws MojoExecutionException When the file set failed to get deleted.
+     */
+    private void removeFileSet( FileSet fileset )
+        throws MojoExecutionException
+    {
+        try
+        {
+            if ( !new File( fileset.getDirectory() ).isAbsolute() )
             {
-                // TODO: IOException from plexus-utils should be acceptable 
here
-                throw new MojoExecutionException( "Failed to delete directory: 
" + dir + ". Reason: " + e.getMessage(),
-                                                  e );
+                fileset.setDirectory( new File( project.getBasedir(), 
fileset.getDirectory() ).getPath() );
             }
+
+            getLog().info( "Deleting " + fileset );
+            fileSetManager.delete( fileset, failOnError );
+        }
+        catch ( IOException e )
+        {
+            throw new MojoExecutionException( "Failed to delete directory: " + 
fileset.getDirectory() + ". Reason: "
+                + e.getMessage(), e );
+        }
+        catch ( IllegalStateException e )
+        {
+            // TODO: IOException from plexus-utils should be acceptable here
+            throw new MojoExecutionException( "Failed to delete directory: " + 
fileset.getDirectory() + ". Reason: "
+                + e.getMessage(), e );
         }
     }
 


Reply via email to