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 ); } }