[MSHARED-1107] FileUtils.copyFile() fails with source file having lastModified = 0 (original) (raw)

The condition in https://github.com/apache/maven-shared-utils/blob/2bf1e034b06557830b9e2bfe0689f1b93ea5fbd0/src/main/java/org/apache/maven/shared/utils/io/FileUtils.java#L1904 returns false in case the source file returns File.lastModified() = 0 as File.lastModified() also returns 0 for non-existing files (https://docs.oracle.com/javase/7/docs/api/java/io/File.html#lastModified()). This leads to the following exception when trying to set permissions in case the destination does not yet exist.

java.nio.file.NoSuchFileException: at sun.nio.fs.UnixException.translateToIOException (UnixException.java:92) at sun.nio.fs.UnixException.rethrowAsIOException (UnixException.java:111) at sun.nio.fs.UnixException.rethrowAsIOException (UnixException.java:116) at sun.nio.fs.UnixFileAttributeViews$Posix.setMode (UnixFileAttributeViews.java:254) at sun.nio.fs.UnixFileAttributeViews$Posix.setPermissions (UnixFileAttributeViews.java:276) at java.nio.file.Files.setPosixFilePermissions (Files.java:2080) at org.apache.maven.shared.utils.io.FileUtils.copyFilePermissions (FileUtils.java:1997) at org.apache.maven.shared.utils.io.FileUtils.copyFile (FileUtils.java:1978)

This is a regression introduced with MSHARED-884.

This method is for example used in maven-resources-plugin:

at org.apache.maven.shared.utils.io.FileUtils.copyFile (FileUtils.java:1978)
at org.apache.maven.shared.filtering.DefaultMavenFileFilter.copyFile (DefaultMavenFileFilter.java:106)
at org.apache.maven.shared.filtering.DefaultMavenResourcesFiltering.filterResources (DefaultMavenResourcesFiltering.java:262)
at org.apache.maven.plugins.resources.ResourcesMojo.execute (ResourcesMojo.java:356)

blocks

Bug - A problem which impairs or prevents the functions of the product. MRESOURCES-289 FileUtils.copyFile() fails with source file having lastModified = 0

is broken by

Improvement - An improvement or enhancement to an existing feature or task. MSHARED-884 Only overwrite filtered resources when contents differ

is related to

Bug - A problem which impairs or prevents the functions of the product. MSHARED-1112 Copy symlinks failed - NoSuchFileException

relates to

Improvement - An improvement or enhancement to an existing feature or task. MRESOURCES-258 Only overwrite filtered resources when contents differ

links to