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