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 2cc4bd99f80b79985e9e984708a4116dd227e861 Author: Martin Kanters <[email protected]> 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 ) {
