desruisseaux commented on code in PR #599:
URL: https://github.com/apache/maven-jar-plugin/pull/599#discussion_r4084454373
##########
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:
Ignore this change proposed by the bot.
* `minIso` is not really a good name. I'm not sure that the ZIP format is an
ISO standard, and even if it was, it would be ambiguous because the formatting
used by `Instant` is also an ISO standard.
* Not worth to use a lambda for warnings, because warnings are rarely silent.
* The attempt to avoid repeating `Instant.ofEpochSecond(EPOCH_MIN)` is nice
but incomplete. We have the date repeated again at the end of the message.
I will propose modifications as comments on the commit instead.
--
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]