You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gn...@apache.org on 2026/09/25 21:12:51 UTC

(maven-archiver) 01/01: Address review: fix @since tag, extract clampToDateMin helper

This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch fix/source-date-epoch-zero
in repository https://gitbox.apache.org/repos/asf/maven-archiver.git

commit 18dfc789b2269a993ea910483fc5784dcc40f14d
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Sep 25 21:12:37 2026 +0000

    Address review: fix @since tag, extract clampToDateMin helper
---
 .../maven/shared/archiver/MavenArchiver.java       | 35 ++++++++++------------
 1 file changed, 16 insertions(+), 19 deletions(-)

diff --git a/src/main/java/org/apache/maven/shared/archiver/MavenArchiver.java b/src/main/java/org/apache/maven/shared/archiver/MavenArchiver.java
index 9153a8d..62d45fa 100644
--- a/src/main/java/org/apache/maven/shared/archiver/MavenArchiver.java
+++ b/src/main/java/org/apache/maven/shared/archiver/MavenArchiver.java
@@ -79,7 +79,7 @@ public class MavenArchiver {
      * Minimum timestamp value for ZIP/JAR entries (1980-01-01T00:00:02Z).
      * Timestamps before this value are clamped to it with a warning.
      *
-     * @since 3.7.1
+     * @since 4.0.0-beta-6
      */
     public static final Instant DATE_MIN = Instant.parse("1980-01-01T00:00:02Z");
 
@@ -714,15 +714,7 @@ public class MavenArchiver {
         // Number representing seconds since the epoch
         if (isNumeric(outputTimestamp)) {
             Instant date = Instant.ofEpochSecond(Long.parseLong(outputTimestamp));
-            if (date.isBefore(DATE_MIN)) {
-                LOGGER.warn(
-                        "Timestamp '{}' is before the minimum date for ZIP/JAR entries."
-                                + " Clamping to DATE_MIN ({}). See https://github.com/apache/maven-jar-plugin/issues/595",
-                        date,
-                        DATE_MIN);
-                date = DATE_MIN;
-            }
-            return Optional.of(date);
+            return Optional.of(clampToDateMin(date, outputTimestamp));
         }
 
         try {
@@ -731,15 +723,7 @@ public class MavenArchiver {
                     .withOffsetSameInstant(ZoneOffset.UTC)
                     .truncatedTo(ChronoUnit.SECONDS)
                     .toInstant();
-            if (date.isBefore(DATE_MIN)) {
-                LOGGER.warn(
-                        "Timestamp '{}' is before the minimum date for ZIP/JAR entries."
-                                + " Clamping to DATE_MIN ({}). See https://github.com/apache/maven-jar-plugin/issues/595",
-                        date,
-                        DATE_MIN);
-                date = DATE_MIN;
-            }
-            return Optional.of(date);
+            return Optional.of(clampToDateMin(date, outputTimestamp));
         } catch (DateTimeParseException pe) {
             throw new IllegalArgumentException(
                     "Invalid project.build.outputTimestamp value '" + outputTimestamp + "'", pe);
@@ -760,6 +744,19 @@ public class MavenArchiver {
         return true;
     }
 
+    private static Instant clampToDateMin(Instant date, String originalInput) {
+        if (date.isBefore(DATE_MIN)) {
+            LOGGER.warn(
+                    "Timestamp '{}' (parsed from '{}') is before the minimum date for ZIP/JAR entries."
+                            + " Clamping to DATE_MIN ({}). See https://github.com/apache/maven-jar-plugin/issues/595",
+                    date,
+                    originalInput,
+                    DATE_MIN);
+            return DATE_MIN;
+        }
+        return date;
+    }
+
     /**
      * Configure Reproducible Builds archive creation if a timestamp is provided.
      *