File reproducible-from-environment.patch of Package moditect
--- moditect-1.2.2.Final/maven-plugin/pom.xml 2024-06-30 18:29:07.000000000 +0200
+++ moditect-1.2.2.Final/maven-plugin/pom.xml 2025-07-16 16:50:21.156822720 +0200
@@ -61,6 +61,11 @@
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
+ <artifactId>maven-archiver</artifactId>
+ <version>3.6.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>${maven.version}</version>
<scope>provided</scope>
--- moditect-1.2.2.Final/maven-plugin/src/main/java/org/moditect/mavenplugin/add/AddModuleInfoMojo.java 2024-06-30 18:29:07.000000000 +0200
+++ moditect-1.2.2.Final/maven-plugin/src/main/java/org/moditect/mavenplugin/add/AddModuleInfoMojo.java 2025-07-16 16:48:02.651690895 +0200
@@ -31,6 +31,7 @@
import java.util.regex.Pattern;
import java.util.stream.Collectors;
+import org.apache.maven.archiver.MavenArchiver;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
@@ -493,44 +494,8 @@
private static class InstantConverter {
- private static final Instant DATE_MIN = Instant.parse("1980-01-01T00:00:02Z");
- private static final Instant DATE_MAX = Instant.parse("2099-12-31T23:59:59Z");
-
public static Instant convert(String value) {
- if (value == null) {
- return null;
- }
-
- // Number representing seconds since the epoch
- if (!value.isEmpty() && isNumeric(value)) {
- return Instant.ofEpochSecond(Long.parseLong(value.trim()));
- }
-
- try {
- // Parse the date in UTC such as '2011-12-03T10:15:30Z' or with an offset '2019-10-05T20:37:42+06:00'.
- final Instant date = OffsetDateTime.parse(value)
- .withOffsetSameInstant(ZoneOffset.UTC).truncatedTo(ChronoUnit.SECONDS).toInstant();
-
- if (date.isBefore(DATE_MIN) || date.isAfter(DATE_MAX)) {
- throw new IllegalArgumentException("'" + date + "' is not within the valid range "
- + DATE_MIN + " to " + DATE_MAX);
- }
- return date;
- }
- catch (DateTimeParseException pe) {
- throw new IllegalArgumentException("Invalid project.build.outputTimestamp value '" + value + "'",
- pe);
- }
- }
-
- private static boolean isNumeric(String str) {
- try {
- Long.parseLong(str.trim());
- return true;
- }
- catch (NumberFormatException e) {
- return false;
- }
+ return MavenArchiver.parseBuildOutputTimestamp(value).orElse(null);
}
}
}