You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2008/09/16 00:14:52 UTC

svn commit: r695670 - in /maven/shared/trunk/maven-filtering: ./ src/main/java/org/apache/maven/shared/filtering/ src/test/java/org/apache/maven/shared/filtering/ src/test/units-files/includeEmptyDirs/ src/test/units-files/includeEmptyDirs/dir1/ src/te...

Author: olamy
Date: Mon Sep 15 15:14:51 2008
New Revision: 695670

URL: http://svn.apache.org/viewvc?rev=695670&view=rev
Log:
[MSHARED-68] Paramater to copy empty directory.


Added:
    maven/shared/trunk/maven-filtering/src/test/units-files/includeEmptyDirs/
    maven/shared/trunk/maven-filtering/src/test/units-files/includeEmptyDirs/dir1/
    maven/shared/trunk/maven-filtering/src/test/units-files/includeEmptyDirs/dir1/foo.txt   (with props)
    maven/shared/trunk/maven-filtering/src/test/units-files/includeEmptyDirs/empty-directory/   (with props)
    maven/shared/trunk/maven-filtering/src/test/units-files/includeEmptyDirs/empty-directory-child/   (with props)
    maven/shared/trunk/maven-filtering/src/test/units-files/includeEmptyDirs/empty-directory-child/empty-child/
Modified:
    maven/shared/trunk/maven-filtering/pom.xml
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java
    maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java

Modified: maven/shared/trunk/maven-filtering/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/pom.xml?rev=695670&r1=695669&r2=695670&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/pom.xml (original)
+++ maven/shared/trunk/maven-filtering/pom.xml Mon Sep 15 15:14:51 2008
@@ -96,7 +96,7 @@
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
-      <version>1.5.5</version>
+      <version>1.5.7-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
@@ -105,4 +105,18 @@
     </dependency>
   </dependencies>
   
+  <!-- remove when plexus-utils 1.5.7 released -->
+  <repositories>
+    <repository>
+      <id>snapshots.codehaus</id>
+        <url>http://snapshots.repository.codehaus.org/</url>
+        <releases>
+          <enabled>false</enabled>
+        </releases>
+        <snapshots>
+          <enabled>true</enabled>
+        </snapshots>
+      </repository>
+    </repositories>
+  
 </project>

Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java?rev=695670&r1=695669&r2=695670&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java (original)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java Mon Sep 15 15:14:51 2008
@@ -20,6 +20,7 @@
  */
 
 import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Iterator;
@@ -220,22 +221,42 @@
             DirectoryScanner scanner = new DirectoryScanner();
 
             scanner.setBasedir( resourceDirectory );
+            String[] includes = null;
             if ( resource.getIncludes() != null && !resource.getIncludes().isEmpty() )
             {
-                scanner.setIncludes( (String[]) resource.getIncludes().toArray( EMPTY_STRING_ARRAY ) );
+                includes = (String[]) resource.getIncludes().toArray( EMPTY_STRING_ARRAY ) ;
             }
             else
             {
-                scanner.setIncludes( DEFAULT_INCLUDES );
+                includes = DEFAULT_INCLUDES;
             }
-
+            scanner.setIncludes( includes );
+            
+            String[] excludes = null;
             if ( resource.getExcludes() != null && !resource.getExcludes().isEmpty() )
             {
-                scanner.setExcludes( (String[]) resource.getExcludes().toArray( EMPTY_STRING_ARRAY ) );
+                excludes = (String[]) resource.getExcludes().toArray( EMPTY_STRING_ARRAY );
+                scanner.setExcludes( excludes );
             }
 
             scanner.addDefaultExcludes();
             scanner.scan();
+            
+            if (mavenResourcesExecution.isIncludeEmptyDirs())
+            {
+                try
+                {
+                    FileUtils.copyDirectoryStructure( resourceDirectory, targetPath == null ? outputDirectory
+                                                                                           : new File( outputDirectory,
+                                                                                                       targetPath ),
+                                                      includes, excludes );
+                }
+                catch ( IOException e )
+                {
+                    throw new MavenFilteringException( "Cannot copy directory structure from "
+                        + resourceDirectory.getPath() + " to " + outputDirectory.getPath() );
+                }
+            }
 
             List includedFiles = Arrays.asList( scanner.getIncludedFiles() );
 

Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java?rev=695670&r1=695669&r2=695670&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java (original)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java Mon Sep 15 15:14:51 2008
@@ -83,6 +83,12 @@
      */
     private boolean overwrite = false;
     
+    /**
+     * Copy any empty directories included in the Ressources
+     * @since 1.0-beta-2
+     */
+    private boolean includeEmptyDirs = false;
+    
     public MavenResourcesExecution()
     {
         projectStartExpressions.add( "pom" );
@@ -385,5 +391,23 @@
     {
         this.overwrite = overwrite;
     }
+
+    /**
+     * @return
+     * @since 1.0-beta-2
+     */
+    public boolean isIncludeEmptyDirs()
+    {
+        return includeEmptyDirs;
+    }
+
+    /**
+     * @param includeEmptyDirs
+     * @since 1.0-beta-2
+     */
+    public void setIncludeEmptyDirs( boolean includeEmptyDirs )
+    {
+        this.includeEmptyDirs = includeEmptyDirs;
+    }
    
 }

Modified: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java?rev=695670&r1=695669&r2=695670&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java (original)
+++ maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java Mon Sep 15 15:14:51 2008
@@ -502,5 +502,65 @@
         assertEquals( 1, files.length );
         assertEquals( "includefile.txt", files[0].getName() );
     }    
+
+    public void testEmptyDirectories()
+        throws Exception
+    {
+        File baseDir = new File( "c:\\foo\\bar" );
+        StubMavenProject mavenProject = new StubMavenProject( baseDir );
+        mavenProject.setVersion( "1.0" );
+        mavenProject.setGroupId( "org.apache" );
+        mavenProject.setName( "test project" );
+
+        MavenResourcesFiltering mavenResourcesFiltering = (MavenResourcesFiltering) lookup( MavenResourcesFiltering.class
+            .getName() );
+
+
+        List resources = new ArrayList();
+        resources.add( new Resource()
+        {
+            {
+                setDirectory( getBasedir() + "/src/test/units-files/includeEmptyDirs" );
+            }
+        } );
+        MavenResourcesExecution mavenResourcesExecution = new MavenResourcesExecution( resources, outputDirectory,
+                                                                                       mavenProject, null, Collections.EMPTY_LIST,
+                                                                                       Collections.EMPTY_LIST,
+                                                                                       new StubMavenSession() );
+        mavenResourcesExecution.setIncludeEmptyDirs( true );
+        mavenResourcesFiltering.filterResources( mavenResourcesExecution );
+        
+        File[] childs = outputDirectory.listFiles();
+        assertEquals( 3, childs.length );
+        
+        for ( int i = 0, size = childs.length; i < size; i++ )
+        {
+            File file = childs[i];
+            if ( file.getName().endsWith( "dir1" ) || file.getName().endsWith( "empty-directory" )
+                || file.getName().endsWith( "empty-directory-child" ) )
+            {
+                if ( file.getName().endsWith( "dir1" ) )
+                {
+                    assertEquals( 1, file.list().length );
+                    assertTrue( file.listFiles()[0].getName().endsWith( "foo.txt" ) );
+                }
+                if ( file.getName().endsWith( "empty-directory" ) )
+                {
+                    assertEquals( 0, file.list().length );
+                }
+                if ( file.getName().endsWith( "empty-directory-child" ) )
+                {
+                    assertEquals( 1, file.list().length );
+                    assertTrue( file.listFiles()[0].isDirectory() );
+                    assertEquals( 0, file.listFiles()[0].listFiles().length );
+                }
+            }
+            else
+            {
+                fail( "unknow child file found " + file.getName() );
+            }
+        }
+    }    
+    
     
 }

Added: maven/shared/trunk/maven-filtering/src/test/units-files/includeEmptyDirs/dir1/foo.txt
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/units-files/includeEmptyDirs/dir1/foo.txt?rev=695670&view=auto
==============================================================================
--- maven/shared/trunk/maven-filtering/src/test/units-files/includeEmptyDirs/dir1/foo.txt (added)
+++ maven/shared/trunk/maven-filtering/src/test/units-files/includeEmptyDirs/dir1/foo.txt Mon Sep 15 15:14:51 2008
@@ -0,0 +1 @@
+foo.
\ No newline at end of file

Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/includeEmptyDirs/dir1/foo.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/includeEmptyDirs/dir1/foo.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/includeEmptyDirs/empty-directory/
------------------------------------------------------------------------------
    svn:mergeinfo = 

Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/includeEmptyDirs/empty-directory-child/
------------------------------------------------------------------------------
    svn:mergeinfo =