[MSHARED-966] Improve copy when dest exists
diff --git a/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java b/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
index cda3576..32d4349 100644
--- a/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
+++ b/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
@@ -20,8 +20,10 @@
*/
import java.io.File;
+import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.nio.file.LinkOption;
+import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import java.util.List;
@@ -105,14 +107,25 @@
{
getLogger().debug( "copy " + from.getPath() + " to " + to.getPath() );
}
+ Path fromPath = from.toPath();
+ Path toPath = to.toPath();
+
if ( overwrite )
{
- Files.copy( from.toPath(), to.toPath(), LinkOption.NOFOLLOW_LINKS,
- StandardCopyOption.REPLACE_EXISTING );
+ Files.copy( fromPath, toPath, LinkOption.NOFOLLOW_LINKS, StandardCopyOption.REPLACE_EXISTING );
}
else
{
- Files.copy( from.toPath(), to.toPath(), LinkOption.NOFOLLOW_LINKS );
+ try
+ {
+ if ( to.lastModified() < from.lastModified() )
+ {
+ Files.copy( fromPath, toPath, LinkOption.NOFOLLOW_LINKS );
+ }
+ } catch ( FileAlreadyExistsException e ) {
+ // ignore
+ getLogger().warn( "Destination already exists " + toPath );
+ }
}
}
diff --git a/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java b/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java
index 60f88be..249aa79 100644
--- a/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java
+++ b/src/test/java/org/apache/maven/shared/filtering/DefaultMavenFileFilterTest.java
@@ -22,7 +22,6 @@
import java.io.File;
import java.io.Reader;
import java.io.StringReader;
-import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
@@ -70,18 +69,7 @@
to.setLastModified( System.currentTimeMillis() );
- try
- {
- mavenFileFilter.copyFile( from, to, false, null, null );
- }
- catch ( MavenFilteringException mfe )
- {
- // dest file already exist - overwrite by default false
- if ( !( mfe.getCause() instanceof FileAlreadyExistsException ) )
- {
- fail( mfe.getMessage() );
- }
- }
+ mavenFileFilter.copyFile( from, to, false, null, null );
Properties properties = PropertyUtils.loadPropertyFile( to, null );
assertEquals( "${pom.version}", properties.getProperty( "version" ) );
diff --git a/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java b/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
index 4671957..db6a6f6 100644
--- a/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
+++ b/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
@@ -688,10 +688,6 @@
File outputDirectory = new File( getBasedir(), "/target/testGitIgnoreFile" );
- if ( outputDirectory.exists() )
- {
- FileUtils.forceDelete( outputDirectory );
- }
List<Resource> resources = new ArrayList<>();
resources.add( new Resource()
{