You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2009/02/09 17:45:28 UTC

svn commit: r742609 - in /maven/shared/trunk/maven-filtering: pom.xml src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java

Author: jvanzyl
Date: Mon Feb  9 16:45:27 2009
New Revision: 742609

URL: http://svn.apache.org/viewvc?rev=742609&view=rev
Log:
MSHARED-93: Support environments that support incremental builds

Modified:
    maven/shared/trunk/maven-filtering/pom.xml
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java

Modified: maven/shared/trunk/maven-filtering/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/pom.xml?rev=742609&r1=742608&r2=742609&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/pom.xml (original)
+++ maven/shared/trunk/maven-filtering/pom.xml Mon Feb  9 16:45:27 2009
@@ -111,13 +111,18 @@
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
-      <version>1.5.6</version>
+      <version>1.5.8</version>
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-interpolation</artifactId>
       <version>1.7</version>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-build-api</artifactId>
+      <version>0.0.1</version>
+    </dependency>
   </dependencies>
   
 </project>

Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java?rev=742609&r1=742608&r2=742609&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java (original)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java Mon Feb  9 16:45:27 2009
@@ -30,6 +30,7 @@
 
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.build.incremental.BuildContext;
 import org.codehaus.plexus.interpolation.InterpolatorFilterReader;
 import org.codehaus.plexus.interpolation.StringSearchInterpolator;
 import org.codehaus.plexus.interpolation.ValueSource;
@@ -49,6 +50,9 @@
     implements MavenFileFilter
 {
 
+    /** @plexus.requirement */
+    private BuildContext buildContext;
+
     public void copyFile( File from, File to, boolean filtering, MavenProject mavenProject, List filters,
                           boolean escapedBackslashesInFilePath, String encoding, MavenSession mavenSession )
         throws MavenFilteringException
@@ -90,6 +94,8 @@
                 }
                 FileUtils.copyFile( from, to, encoding, new FileUtils.FilterWrapper[0], overwrite );
             }
+
+            buildContext.refresh( to );
         }
         catch ( IOException e )
         {

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=742609&r1=742608&r2=742609&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 Feb  9 16:45:27 2009
@@ -29,12 +29,13 @@
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Resource;
 import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.build.incremental.BuildContext;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
-import org.codehaus.plexus.util.DirectoryScanner;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.ReaderFactory;
+import org.codehaus.plexus.util.Scanner;
 import org.codehaus.plexus.util.StringUtils;
 
 /**
@@ -54,7 +55,10 @@
     private static final String[] DEFAULT_INCLUDES = {"**/**"};
     
     private List defaultNonFilteredFileExtensions;
-    
+
+    /** @plexus.requirement */
+    private BuildContext buildContext;
+
     // ------------------------------------------------
     //  Plexus lifecycle
     // ------------------------------------------------
@@ -216,30 +220,12 @@
 
             }
 
-            DirectoryScanner scanner = new DirectoryScanner();
+            Scanner scanner = buildContext.newScanner( resourceDirectory, buildContext.hasDelta( mavenResourcesExecution.getFileFilters() ) );
 
-            scanner.setBasedir( resourceDirectory );
-            String[] includes = null;
-            if ( resource.getIncludes() != null && !resource.getIncludes().isEmpty() )
-            {
-                includes = (String[]) resource.getIncludes().toArray( EMPTY_STRING_ARRAY ) ;
-            }
-            else
-            {
-                includes = DEFAULT_INCLUDES;
-            }
-            scanner.setIncludes( includes );
-            
-            String[] excludes = null;
-            if ( resource.getExcludes() != null && !resource.getExcludes().isEmpty() )
-            {
-                excludes = (String[]) resource.getExcludes().toArray( EMPTY_STRING_ARRAY );
-                scanner.setExcludes( excludes );
-            }
+            setupScanner(resource, scanner);
 
-            scanner.addDefaultExcludes();
             scanner.scan();
-            
+
             if ( mavenResourcesExecution.isIncludeEmptyDirs() )
             {
                 try
@@ -265,27 +251,11 @@
             {
                 String name = (String) j.next();
 
-                String destination = name;
-
-                if ( targetPath != null )
-                {
-                    destination = targetPath + "/" + name;
-                }
-
                 File source = new File( resourceDirectory, name );
 
                 //File destinationFile = new File( outputDirectory, destination );
 
-                File destinationFile = new File( destination );
-                if ( !destinationFile.isAbsolute() )
-                {
-                    destinationFile = new File( outputDirectory, destination );
-                }                
-                
-                if ( !destinationFile.getParentFile().exists() )
-                {
-                    destinationFile.getParentFile().mkdirs();
-                }
+                File destinationFile = getDestinationFile(outputDirectory, targetPath, name);
                 
                 boolean filteredExt = filteredFileExtension( source.getName(), mavenResourcesExecution
                     .getNonFilteredFileExtensions() );
@@ -294,11 +264,77 @@
                                           mavenResourcesExecution.getFilterWrappers(), mavenResourcesExecution
                                               .getEncoding(), mavenResourcesExecution.isOverwrite() );
             }
+
+            // deal with deleted source files
+
+            scanner = buildContext.newDeleteScanner( resourceDirectory );
+            
+            setupScanner(resource, scanner);
+            
+            scanner.scan();
+
+            List deletedFiles = Arrays.asList( scanner.getIncludedFiles() );
+
+            for ( Iterator j = deletedFiles.iterator(); j.hasNext(); )
+            {
+                String name = (String) j.next();
+
+                File destinationFile = getDestinationFile(outputDirectory, targetPath, name);
+                
+                destinationFile.delete();
+                
+                buildContext.refresh( destinationFile );
+            }
+
         }
 
     }
+
+    private File getDestinationFile(File outputDirectory, String targetPath, String name) {
+      String destination = name;
+
+      if ( targetPath != null )
+      {
+          destination = targetPath + "/" + name;
+      }
+
+      File destinationFile = new File( destination );
+      if ( !destinationFile.isAbsolute() )
+      {
+          destinationFile = new File( outputDirectory, destination );
+      }                
+      
+      if ( !destinationFile.getParentFile().exists() )
+      {
+          destinationFile.getParentFile().mkdirs();
+      }
+      return destinationFile;
+    }
+
+    private String[] setupScanner(Resource resource, Scanner scanner) {
+      String[] includes = null;
+      if ( resource.getIncludes() != null && !resource.getIncludes().isEmpty() )
+      {
+          includes = (String[]) resource.getIncludes().toArray( EMPTY_STRING_ARRAY ) ;
+      }
+      else
+      {
+          includes = DEFAULT_INCLUDES;
+      }
+      scanner.setIncludes( includes );
+      
+      String[] excludes = null;
+      if ( resource.getExcludes() != null && !resource.getExcludes().isEmpty() )
+      {
+          excludes = (String[]) resource.getExcludes().toArray( EMPTY_STRING_ARRAY );
+          scanner.setExcludes( excludes );
+      }
+
+      scanner.addDefaultExcludes();
+      return includes;
+    }
     
-    private void copyDirectoryLayout( File sourceDirectory, File destinationDirectory, DirectoryScanner scanner )
+    private void copyDirectoryLayout( File sourceDirectory, File destinationDirectory, Scanner scanner )
         throws IOException
     {
         if ( sourceDirectory == null )
@@ -338,6 +374,4 @@
             destination.mkdirs();
         }
     }
-    
-    
 }