From d602c16639b3ee02b96560b387ee8730938e518f Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Tue, 1 Jul 2025 10:29:09 +0200 Subject: [PATCH] Fix ReactorReader incorrect warnings and logic (fixes #2497, #2498) - Fix isPackagedArtifactUpToDate to return false when output files are newer - Skip up-to-date check for POM artifacts to avoid comparing class files against POM files - Resolves incorrect warnings when class files have same timestamp as POM files (cherry picked from commit e2d8c759461ade11c84db049497b70a8cd2c0640) --- .../java/org/apache/maven/ReactorReader.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/impl/maven-core/src/main/java/org/apache/maven/ReactorReader.java b/impl/maven-core/src/main/java/org/apache/maven/ReactorReader.java index 825e38bcade4..db2efa77205a 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/ReactorReader.java +++ b/impl/maven-core/src/main/java/org/apache/maven/ReactorReader.java @@ -113,10 +113,12 @@ public File findArtifact(Artifact artifact) { // No project, but most certainly a dependency which has been built previously File packagedArtifactFile = findInProjectLocalRepository(artifact); if (packagedArtifactFile != null && packagedArtifactFile.exists()) { - // Check if artifact is up-to-date - project = getProject(artifact, getAllProjects()); - if (project != null) { - isPackagedArtifactUpToDate(project, packagedArtifactFile); + // Check if artifact is up-to-date (only for non-POM artifacts) + if (!"pom".equals(artifact.getExtension())) { + project = getProject(artifact, getAllProjects()); + if (project != null) { + isPackagedArtifactUpToDate(project, packagedArtifactFile); + } } return packagedArtifactFile; } @@ -176,7 +178,9 @@ private File findArtifact(MavenProject project, Artifact artifact, boolean check File packagedArtifactFile = findInProjectLocalRepository(artifact); if (packagedArtifactFile != null && packagedArtifactFile.exists() - && (!checkUptodate || isPackagedArtifactUpToDate(project, packagedArtifactFile))) { + && (!checkUptodate + || "pom".equals(artifact.getExtension()) + || isPackagedArtifactUpToDate(project, packagedArtifactFile))) { return packagedArtifactFile; } @@ -252,7 +256,14 @@ private boolean isPackagedArtifactUpToDate(MavenProject project, File packagedAr + "please run a full `mvn package` build", relativizeOutputFile(outputFile), project.getArtifactId()); - return true; + return false; + } else if (LOGGER.isDebugEnabled()) { + LOGGER.debug( + "File '{}' timestamp {} vs artifact timestamp {} for '{}'", + relativizeOutputFile(outputFile), + outputFileLastModified, + artifactLastModified, + project.getArtifactId()); } }