[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()
         {