Author: olamy
Date: Thu Apr 17 15:54:03 2008
New Revision: 649323

URL: http://svn.apache.org/viewvc?rev=649323&view=rev
Log:
[MINVOKER-32] Exclude some files by default when using "cloneProjectsTo"
Submitted by Paul Gier


Modified:
    
maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/InvokerMojo.java

Modified: 
maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/InvokerMojo.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/InvokerMojo.java?rev=649323&r1=649322&r2=649323&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/InvokerMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/InvokerMojo.java
 Thu Apr 17 15:54:03 2008
@@ -48,6 +48,7 @@
 import org.apache.maven.shared.invoker.MavenInvocationException;
 import org.apache.maven.shared.model.fileset.FileSet;
 import org.apache.maven.shared.model.fileset.util.FileSetManager;
+import org.codehaus.plexus.util.DirectoryScanner;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.InterpolationFilterReader;
@@ -120,6 +121,16 @@
     private File cloneProjectsTo;
 
     /**
+     * Some files are normally excluded when copying from the projectsDirectory
+     * to the "cloneProjectsTo" directory (.svn, CVS, *~, etc).  Setting this 
parameter to true
+     * will cause all files to be copied to the cloneProjectsTo directory.
+     *
+     * @parameter default-value="false"
+     * @since 1.2
+     */
+    private boolean cloneAllFiles;
+
+    /**
      * A single POM to build, skipping any scanning parameters and behavior.
      *
      * @parameter expression="${invoker.pom}"
@@ -419,24 +430,50 @@
                         temp.delete();
                         temp.mkdirs();
 
-                        FileUtils.copyDirectoryStructure( projectsDirectory, 
temp );
+                        copyDirectoryStructure( projectsDirectory, temp );
 
                         FileUtils.deleteDirectory( new File( temp, cloneSubdir 
) );
 
-                        FileUtils.copyDirectoryStructure( temp, 
cloneProjectsTo );
+                        copyDirectoryStructure( temp, cloneProjectsTo );
                     }
                     else
                     {
-                        FileUtils.copyDirectoryStructure( projectsDirectory, 
cloneProjectsTo );
+                        copyDirectoryStructure( projectsDirectory, 
cloneProjectsTo );
                     }
                 }
                 else
                 {
-                    FileUtils.copyDirectoryStructure( new File( 
projectsDirectory, subpath ), new File( cloneProjectsTo, subpath ) );
+                    copyDirectoryStructure( new File( projectsDirectory, 
subpath ), new File( cloneProjectsTo, subpath ) );
                 }
 
                 clonedSubpaths.add( subpath );
             }
+        }
+    }
+    
+    /**
+     * Copied a directory structure with deafault exclusions (.svn, CVS, etc)
+     * 
+     * @param sourceDir
+     * @param destDir
+     * @throws IOException
+     */
+    private void copyDirectoryStructure( File sourceDir, File destDir ) throws 
IOException
+    {
+        DirectoryScanner scanner = new DirectoryScanner();
+        scanner.setBasedir( sourceDir );
+        if ( ! cloneAllFiles )
+        {
+            scanner.addDefaultExcludes();
+        }
+        scanner.scan();
+        
+        String [] includedFiles = scanner.getIncludedFiles();
+        for ( int i = 0; i < includedFiles.length; ++i )
+        {
+            File sourceFile = new File( sourceDir, includedFiles[ i ] );
+            File destFile = new File( destDir, includedFiles[ i ] );
+            FileUtils.copyFile( sourceFile, destFile );
         }
     }
 


Reply via email to