You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2020/03/29 20:05:07 UTC
[maven] 16/17: Using Files.getLastModifiedTime instead of
File#lastModified to avoid a bug in JDK8 on linux.
This is an automated email from the ASF dual-hosted git repository.
rfscholte pushed a commit to branch MNG-4660
in repository https://gitbox.apache.org/repos/asf/maven.git
commit bce3d147eb1bfc5d2a2a6992116a5db739c8d9b4
Author: Martin Kanters <Ma...@infosupport.com>
AuthorDate: Sun Mar 29 17:16:34 2020 +0200
Using Files.getLastModifiedTime instead of File#lastModified to avoid a bug in JDK8 on linux.
---
.../src/main/java/org/apache/maven/ReactorReader.java | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/maven-core/src/main/java/org/apache/maven/ReactorReader.java b/maven-core/src/main/java/org/apache/maven/ReactorReader.java
index ddc74f7..13d7205 100644
--- a/maven-core/src/main/java/org/apache/maven/ReactorReader.java
+++ b/maven-core/src/main/java/org/apache/maven/ReactorReader.java
@@ -32,7 +32,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.function.Predicate;
+import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.inject.Inject;
@@ -247,16 +247,20 @@ class ReactorReader
try ( Stream<Path> outputFiles = Files.walk( outputDirectory ) )
{
- long artifactLastModified = packagedArtifactFile.lastModified();
- Predicate<Path> isNewerThanPackagedArtifact = path -> path.toFile().lastModified() > artifactLastModified;
- boolean isPackagedArtifactUpToDate = outputFiles.noneMatch( isNewerThanPackagedArtifact );
+ // Not using File#lastModified() to avoid a Linux JDK8 milliseconds precision bug: JDK-8177809.
+ long artifactLastModified = Files.getLastModifiedTime( packagedArtifactFile.toPath() ).toMillis();
- if ( !isPackagedArtifactUpToDate )
+ for ( Path outputFile : outputFiles.collect( Collectors.toList() ) )
{
- logger.warn( "Packaged artifact is not up-to-date compared to the build output directory" );
+ long outputFileLastModified = Files.getLastModifiedTime( outputFile ).toMillis();
+ if ( outputFileLastModified > artifactLastModified )
+ {
+ logger.warn( "Packaged artifact is not up-to-date compared to the build output directory" );
+ return false;
+ }
}
- return isPackagedArtifactUpToDate;
+ return true;
}
catch ( IOException e )
{