gnodet-bot commented on code in PR #599:
URL: https://github.com/apache/maven-jar-plugin/pull/599#discussion_r4084158208


##########
src/main/java/org/apache/maven/plugins/jar/AbstractJarMojo.java:
##########
@@ -270,11 +288,28 @@ protected String getOutputTimestamp() {
         for (int i = time.length(); --i >= 0; ) {
             char c = time.charAt(i);
             if ((c < '0' || c > '9') && (i != 0 || c != '-')) {
+                // Not a plain integer — treat as ISO 8601 and pass through 
as-is.
                 return time;
             }
         }
+        // Plain integer: convert from seconds to ISO 8601, clamping to 
EPOCH_MIN if needed.
         try {
-            return Instant.ofEpochSecond(Long.parseLong(time)).toString();
+            long seconds = Long.parseLong(time);
+            if (seconds < EPOCH_MIN) {
+                Instant instant = Instant.ofEpochSecond(seconds);
+                log.warn("Output timestamp \""
+                        + time
+                        + "\" (resolved to "
+                        + instant
+                        + ") is before the minimum value accepted by the jar 
tool ("
+                        + Instant.ofEpochSecond(EPOCH_MIN)
+                        + "). Clamping to minimum. "
+                        + "If you use SOURCE_DATE_EPOCH=0, set it to at least "
+                        + EPOCH_MIN
+                        + " (1980-01-01T00:00:02Z).");
+                return Instant.ofEpochSecond(EPOCH_MIN).toString();

Review Comment:
   ⚠️ **Nit:** `Instant.ofEpochSecond(EPOCH_MIN)` is computed twice — once for 
the warning message (line 305) and once for the return value (line 310). The 
`instant` variable on line 299 already holds the pre-1980 value; use a second 
local for the minimum to avoid the duplicate allocation:
   
   ```suggestion
                   Instant instant = Instant.ofEpochSecond(seconds);
                   Instant min = Instant.ofEpochSecond(EPOCH_MIN);
                   log.warn("Output timestamp \""
                           + time
                           + "\" (resolved to "
                           + instant
                           + ") is before the minimum value accepted by the jar 
tool ("
                           + min
                           + "). Clamping to minimum. "
                           + "If you use SOURCE_DATE_EPOCH=0, set it to at 
least "
                           + EPOCH_MIN
                           + " (1980-01-01T00:00:02Z).");
                   return min.toString();
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to