You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/11/30 15:48:12 UTC

svn commit: r885439 - in /maven/shared/trunk/maven-filtering/src: main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java test/java/org/apache/maven/shared/filtering/IncrementalResourceFilteringTest.java

Author: bentmann
Date: Mon Nov 30 14:48:12 2009
New Revision: 885439

URL: http://svn.apache.org/viewvc?rev=885439&view=rev
Log:
[MSHARED-125] Current incremental build implementation failed when resources are removed from target folder

Modified:
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java
    maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/IncrementalResourceFilteringTest.java

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=885439&r1=885438&r2=885439&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 Nov 30 14:48:12 2009
@@ -33,6 +33,7 @@
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
 import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.PathTool;
 import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.Scanner;
 import org.codehaus.plexus.util.StringUtils;
@@ -220,9 +221,8 @@
             }
             
             boolean ignoreDelta =
-                buildContext.hasDelta( mavenResourcesExecution.getFileFilters() )
-                    || buildContext.hasDelta( mavenResourcesExecution.getOutputDirectory().getPath() )
-                    || !outputExists;
+                !outputExists || buildContext.hasDelta( mavenResourcesExecution.getFileFilters() )
+                    || buildContext.hasDelta( getRelativeOutputDirectory( mavenResourcesExecution ) );
             getLogger().debug( "ignoreDelta " + ignoreDelta );
             Scanner scanner = buildContext.newScanner( resourceDirectory, ignoreDelta );
 
@@ -378,4 +378,26 @@
             destination.mkdirs();
         }
     }
+
+    private String getRelativeOutputDirectory( MavenResourcesExecution execution )
+    {
+        String relOutDir = execution.getOutputDirectory().getAbsolutePath();
+
+        if ( execution.getMavenProject() != null && execution.getMavenProject().getBasedir() != null )
+        {
+            String basedir = execution.getMavenProject().getBasedir().getAbsolutePath();
+            relOutDir = PathTool.getRelativeFilePath( basedir, relOutDir );
+            if ( relOutDir == null )
+            {
+                relOutDir = execution.getOutputDirectory().getPath();
+            }
+            else
+            {
+                relOutDir = relOutDir.replace( '\\', '/' );
+            }
+        }
+
+        return relOutDir;
+    }
+
 }

Modified: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/IncrementalResourceFilteringTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/IncrementalResourceFilteringTest.java?rev=885439&r1=885438&r2=885439&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/IncrementalResourceFilteringTest.java (original)
+++ maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/IncrementalResourceFilteringTest.java Mon Nov 30 14:48:12 2009
@@ -73,6 +73,27 @@
 
     }
 
+    public void testOutputChange()
+        throws Exception
+    {
+        // run full build first
+        filter( "time" );
+
+        // all files are reprocessed after contents of output directory changed (e.g. was deleted)
+        HashSet changedFiles = new HashSet();
+        changedFiles.add( "target/IncrementalResourceFilteringTest" );
+        TestIncrementalBuildContext ctx = new TestIncrementalBuildContext( unitDirectory, changedFiles, new HashMap() );
+        ThreadBuildContext.setThreadBuildContext( ctx );
+
+        filter( "notime" );
+        assertTime( "notime", "file01.txt" );
+        assertTime( "notime", "file02.txt" );
+
+        assertTrue( ctx.getRefreshFiles().contains( new File( outputDirectory, "file01.txt" ) ) );
+        assertTrue( ctx.getRefreshFiles().contains( new File( outputDirectory, "file02.txt" ) ) );
+
+    }
+
     public void testFilterChange()
         throws Exception
     {
@@ -136,7 +157,7 @@
     private void filter( String time )
         throws Exception, MavenFilteringException
     {
-        File baseDir = new File( "c:\\foo\\bar" );
+        File baseDir = new File( getBasedir() );
         StubMavenProject mavenProject = new StubMavenProject( baseDir );
         mavenProject.setVersion( "1.0" );
         mavenProject.setGroupId( "org.apache" );