Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package maven-archiver for openSUSE:Factory 
checked in at 2025-10-09 15:05:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/maven-archiver (Old)
 and      /work/SRC/openSUSE:Factory/.maven-archiver.new.11973 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "maven-archiver"

Thu Oct  9 15:05:30 2025 rev:11 rq:1309870 version:3.6.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/maven-archiver/maven-archiver.changes    
2025-08-11 13:54:22.593770274 +0200
+++ /work/SRC/openSUSE:Factory/.maven-archiver.new.11973/maven-archiver.changes 
2025-10-09 15:08:09.834827586 +0200
@@ -1,0 +2,20 @@
+Wed Oct  8 23:12:31 UTC 2025 - Fridrich Strba <[email protected]>
+
+- Upgrade to maven-archiver 3.6.5
+  * New features and improvements
+    + add Java-Version entry to default MANIFEST.MF
+  * Bug Fixes
+    + avoid negative entry time: upgrade plexus-archiver
+    + don't limit outputTimestamp to zip (MS DOS) range
+  * Documentation updates
+    + remove extra newline in code blocks
+    + reformat descriptor description to match usual
+      Modello-generated ones
+    + document Java-Version entry added in #298
+  * Maintenance
+    + Update site descriptor to 2.0.0
+  * Dependency updates
+    + Bump org.assertj:assertj-core from 3.27.3 to 3.27.6
+    + Bump org.codehaus.plexus:plexus-archiver from 4.10.0 to 4.10.1
+
+-------------------------------------------------------------------

Old:
----
  maven-archiver-3.6.4-source-release.zip

New:
----
  _scmsync.obsinfo
  build.specials.obscpio
  maven-archiver-3.6.5-source-release.zip

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ maven-archiver.spec ++++++
--- /var/tmp/diff_new_pack.5J998W/_old  2025-10-09 15:08:10.290846809 +0200
+++ /var/tmp/diff_new_pack.5J998W/_new  2025-10-09 15:08:10.294846977 +0200
@@ -18,7 +18,7 @@
 
 %bcond_with tests
 Name:           maven-archiver
-Version:        3.6.4
+Version:        3.6.5
 Release:        0
 Summary:        Maven Archiver
 License:        Apache-2.0
@@ -33,7 +33,7 @@
 BuildRequires:  maven-shared-utils
 BuildRequires:  plexus-archiver >= 4.2.0
 BuildRequires:  plexus-interpolation >= 1.25
-BuildRequires:  plexus-utils >= 3.3.0
+BuildRequires:  plexus-xml
 BuildRequires:  sisu-plexus
 BuildRequires:  unzip
 BuildArch:      noarch
@@ -64,7 +64,8 @@
   maven-shared-utils/maven-shared-utils \
   org.eclipse.sisu.plexus \
   plexus/archiver \
-  plexus/interpolation
+  plexus/interpolation \
+  plexus/xml
 
 ant jar javadoc
 

++++++ _scmsync.obsinfo ++++++
mtime: 1759965464
commit: f8c49b01eb8cb04ddede38c6ce2e31f1a043e059850216e72b0149a39bc4afa3
url: https://src.opensuse.org/java-packages/maven-archiver.git
revision: f8c49b01eb8cb04ddede38c6ce2e31f1a043e059850216e72b0149a39bc4afa3
projectscmsync: https://src.opensuse.org/java-packages/_ObsPrj

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2025-10-09 01:18:04.000000000 +0200
@@ -0,0 +1 @@
+.osc

++++++ maven-archiver-3.6.4-source-release.zip -> 
maven-archiver-3.6.5-source-release.zip ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maven-archiver-3.6.4/DEPENDENCIES 
new/maven-archiver-3.6.5/DEPENDENCIES
--- old/maven-archiver-3.6.4/DEPENDENCIES       2025-08-07 10:55:20.000000000 
+0200
+++ new/maven-archiver-3.6.5/DEPENDENCIES       2025-10-05 14:24:06.000000000 
+0200
@@ -14,28 +14,31 @@
   - javax.inject (http://code.google.com/p/atinject/) 
javax.inject:javax.inject:jar:1
     License: The Apache Software License, Version 2.0  
(http://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - XZ for Java (https://tukaani.org/xz/java.html) org.tukaani:xz:jar:1.9
-    License: Public Domain 
+  - XZ for Java (https://tukaani.org/xz/java.html) org.tukaani:xz:jar:1.10
+    License: 0BSD 
 
 
 From: 'Codehaus Plexus' (https://codehaus-plexus.github.io/)
 
-  - Plexus Archiver Component 
(https://codehaus-plexus.github.io/plexus-archiver/) 
org.codehaus.plexus:plexus-archiver:jar:4.10.0
-    License: Apache License, Version 2.0  
(https://www.apache.org/licenses/LICENSE-2.0.txt)
+  - Plexus Archiver Component 
(https://codehaus-plexus.github.io/plexus-archiver/) 
org.codehaus.plexus:plexus-archiver:jar:4.10.2
+    License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
   - Plexus Interpolation API 
(https://codehaus-plexus.github.io/plexus-pom/plexus-interpolation/) 
org.codehaus.plexus:plexus-interpolation:bundle:1.28
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Plexus IO Components 
(https://codehaus-plexus.github.io/plexus-pom/plexus-io/) 
org.codehaus.plexus:plexus-io:jar:3.5.0
+  - Plexus IO Components 
(https://codehaus-plexus.github.io/plexus-pom/plexus-io/) 
org.codehaus.plexus:plexus-io:jar:3.5.1
     License: Apache License, Version 2.0  
(https://www.apache.org/licenses/LICENSE-2.0.txt)
 
   - Plexus Common Utilities (https://codehaus-plexus.github.io/plexus-utils/) 
org.codehaus.plexus:plexus-utils:jar:4.0.2
     License: Apache License, Version 2.0  
(https://www.apache.org/licenses/LICENSE-2.0.txt)
 
+  - Plexus XML Utilities (https://codehaus-plexus.github.io/plexus-xml/) 
org.codehaus.plexus:plexus-xml:jar:3.0.2
+    License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
+
 
 From: 'com.github.luben'
 
-  - zstd-jni (https://github.com/luben/zstd-jni) 
com.github.luben:zstd-jni:jar:1.5.6-3
+  - zstd-jni (https://github.com/luben/zstd-jni) 
com.github.luben:zstd-jni:jar:1.5.7-4
     License: BSD 2-Clause License  
(https://opensource.org/licenses/BSD-2-Clause)
 
 
@@ -47,16 +50,16 @@
 
 From: 'The Apache Software Foundation' (https://www.apache.org/)
 
-  - Apache Commons Codec (https://commons.apache.org/proper/commons-codec/) 
commons-codec:commons-codec:jar:1.17.0
+  - Apache Commons Codec (https://commons.apache.org/proper/commons-codec/) 
commons-codec:commons-codec:jar:1.19.0
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Apache Commons IO (https://commons.apache.org/proper/commons-io/) 
commons-io:commons-io:jar:2.16.1
+  - Apache Commons IO (https://commons.apache.org/proper/commons-io/) 
commons-io:commons-io:jar:2.20.0
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Apache Commons Compress 
(https://commons.apache.org/proper/commons-compress/) 
org.apache.commons:commons-compress:jar:1.26.2
+  - Apache Commons Compress 
(https://commons.apache.org/proper/commons-compress/) 
org.apache.commons:commons-compress:jar:1.28.0
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Apache Commons Lang (https://commons.apache.org/proper/commons-lang/) 
org.apache.commons:commons-lang3:jar:3.14.0
+  - Apache Commons Lang (https://commons.apache.org/proper/commons-lang/) 
org.apache.commons:commons-lang3:jar:3.18.0
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maven-archiver-3.6.4/pom.xml 
new/maven-archiver-3.6.5/pom.xml
--- old/maven-archiver-3.6.4/pom.xml    2025-08-07 10:55:20.000000000 +0200
+++ new/maven-archiver-3.6.5/pom.xml    2025-10-05 14:24:06.000000000 +0200
@@ -28,7 +28,7 @@
 
   <groupId>org.apache.maven</groupId>
   <artifactId>maven-archiver</artifactId>
-  <version>3.6.4</version>
+  <version>3.6.5</version>
 
   <name>Apache Maven Archiver</name>
   <description>Provides utility methods for creating JARs and other archive 
files from a Maven project.</description>
@@ -36,7 +36,7 @@
   <scm>
     
<connection>scm:git:https://github.com/apache/maven-archiver.git</connection>
     
<developerConnection>scm:git:https://github.com/apache/maven-archiver.git</developerConnection>
-    <tag>maven-archiver-3.6.4</tag>
+    <tag>maven-archiver-3.6.5</tag>
     <url>https://github.com/apache/maven-archiver/tree/${project.scm.tag}</url>
   </scm>
   <issueManagement>
@@ -57,7 +57,7 @@
   <properties>
     <mavenVersion>3.2.5</mavenVersion>
     <javaVersion>8</javaVersion>
-    
<project.build.outputTimestamp>2025-08-07T10:55:20Z</project.build.outputTimestamp>
+    
<project.build.outputTimestamp>2025-10-05T14:24:05Z</project.build.outputTimestamp>
   </properties>
 
   <dependencies>
@@ -76,13 +76,18 @@
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-archiver</artifactId>
-      <version>4.10.0</version>
+      <version>4.10.2</version>
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-interpolation</artifactId>
       <version>1.28</version>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-xml</artifactId>
+      <version>3.0.2</version>
+    </dependency>
     <!--
       Test dependencies
     -->
@@ -99,7 +104,7 @@
     <dependency>
       <groupId>org.assertj</groupId>
       <artifactId>assertj-core</artifactId>
-      <version>3.27.3</version>
+      <version>3.27.6</version>
       <scope>test</scope>
     </dependency>
     <dependency>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/maven-archiver-3.6.4/src/main/java/org/apache/maven/archiver/BuildHelper.java
 
new/maven-archiver-3.6.5/src/main/java/org/apache/maven/archiver/BuildHelper.java
--- 
old/maven-archiver-3.6.4/src/main/java/org/apache/maven/archiver/BuildHelper.java
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/maven-archiver-3.6.5/src/main/java/org/apache/maven/archiver/BuildHelper.java
   2025-10-05 14:24:06.000000000 +0200
@@ -0,0 +1,133 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.archiver;
+
+import java.util.Arrays;
+import java.util.Map;
+
+import org.apache.maven.model.Plugin;
+import org.apache.maven.model.PluginContainer;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
+
+/**
+ * Helper to detect info about build info in a MavenProject, as configured in 
plugins.
+ *
+ * @since 3.6.5
+ */
+public class BuildHelper {
+    /**
+     * Tries to determine the target Java release from the following sources 
(until one is found)
+     * <ol>
+     * <li>use {@code release} configuration of {@code 
org.apache.maven.plugins:maven-compiler-plugin}</li>
+     * <li>use {@code maven.compiler.release<} property</li>
+     * <li>use {@code target} configuration of {@code 
org.apache.maven.plugins:maven-compiler-plugin}</li>
+     * <li>use {@code maven.compiler.target} property</li>
+     * </ol>
+     *
+     * @param project not null
+     * @return the Java release version configured in the project, or null if 
not configured
+     */
+    public static String discoverJavaRelease(MavenProject project) {
+        Plugin compiler = getCompilerPlugin(project);
+
+        String jdk = getPluginParameter(project, compiler, "release", 
"maven.compiler.release");
+
+        if (jdk == null) {
+            jdk = getPluginParameter(project, compiler, "target", 
"maven.compiler.target");
+        }
+
+        return normalizeJavaVersion(jdk);
+    }
+
+    /**
+     * Normalize Java version, for versions 5 to 8 where there is a 1.x alias.
+     *
+     * @param jdk can be null
+     * @return normalized version if an alias was used
+     */
+    public static String normalizeJavaVersion(String jdk) {
+        if (jdk != null
+                && jdk.length() == 3
+                && Arrays.asList("1.5", "1.6", "1.7", "1.8").contains(jdk)) {
+            jdk = jdk.substring(2);
+        }
+        return jdk;
+    }
+
+    public static Plugin getCompilerPlugin(MavenProject project) {
+        return getPlugin(project, 
"org.apache.maven.plugins:maven-compiler-plugin");
+    }
+
+    /**
+     * Get plugin from project based on coordinates {@code groupId:artifactId}.
+     *
+     * @param project not null
+     * @param pluginGa {@code groupId:artifactId}
+     * @return the plugin from build or pluginManagement, if available in 
project
+     */
+    public static Plugin getPlugin(MavenProject project, String pluginGa) {
+        Plugin plugin = getPlugin(project.getBuild(), pluginGa);
+        if (plugin == null) {
+            plugin = getPlugin(project.getPluginManagement(), pluginGa);
+        }
+        return plugin;
+    }
+
+    /**
+     * Get plugin parameter value if configured in current project.
+     *
+     * @param project not null
+     * @param plugin can be null
+     * @param parameter the parameter name when configured in plugin's 
configuration
+     * @param defaultValueProperty the property name when default value is 
used for the plugin parameter
+     * @return the value, or null if not configured at all, but using internal 
default from plugin.
+     */
+    public static String getPluginParameter(
+            MavenProject project, Plugin plugin, String parameter, String 
defaultValueProperty) {
+        String value = getPluginParameter(plugin, parameter);
+        if (value == null) {
+            value = project.getProperties().getProperty(defaultValueProperty);
+        }
+        return value;
+    }
+
+    private static Plugin getPlugin(PluginContainer container, String 
pluginGa) {
+        if (container == null) {
+            return null;
+        }
+        Map<String, Plugin> pluginsAsMap = container.getPluginsAsMap();
+        return pluginsAsMap.get(pluginGa);
+    }
+
+    private static String getPluginParameter(Plugin plugin, String parameter) {
+        if (plugin != null) {
+            Xpp3Dom pluginConf = (Xpp3Dom) plugin.getConfiguration();
+
+            if (pluginConf != null) {
+                Xpp3Dom target = pluginConf.getChild(parameter);
+
+                if (target != null) {
+                    return target.getValue();
+                }
+            }
+        }
+        return null;
+    }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/maven-archiver-3.6.4/src/main/java/org/apache/maven/archiver/MavenArchiver.java
 
new/maven-archiver-3.6.5/src/main/java/org/apache/maven/archiver/MavenArchiver.java
--- 
old/maven-archiver-3.6.4/src/main/java/org/apache/maven/archiver/MavenArchiver.java
 2025-08-07 10:55:20.000000000 +0200
+++ 
new/maven-archiver-3.6.5/src/main/java/org/apache/maven/archiver/MavenArchiver.java
 2025-10-05 14:24:06.000000000 +0200
@@ -97,10 +97,6 @@
             "${artifact.groupIdPath}/${artifact.artifactId}/" + 
"${artifact.baseVersion}/${artifact.artifactId}-"
                     + 
"${artifact.baseVersion}${dashClassifier?}.${artifact.extension}";
 
-    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");
-
     private static final List<String> ARTIFACT_EXPRESSION_PREFIXES;
 
     static {
@@ -252,7 +248,7 @@
         Manifest m = new Manifest();
 
         if (config.isAddDefaultEntries()) {
-            handleDefaultEntries(m, entries);
+            handleDefaultEntries(project, m, entries);
         }
 
         if (config.isAddBuildEnvironmentEntries()) {
@@ -607,12 +603,17 @@
         archiver.createArchive();
     }
 
-    private void handleDefaultEntries(Manifest m, Map<String, String> entries) 
throws ManifestException {
+    private void handleDefaultEntries(MavenProject project, Manifest m, 
Map<String, String> entries)
+            throws ManifestException {
         String createdBy = this.createdBy;
         if (createdBy == null) {
             createdBy = createdBy(CREATED_BY, "org.apache.maven", 
"maven-archiver");
         }
         addManifestAttribute(m, entries, "Created-By", createdBy);
+        String javaVersion = BuildHelper.discoverJavaRelease(project);
+        if (javaVersion != null) {
+            addManifestAttribute(m, entries, "Java-Version", javaVersion);
+        }
         if (buildJdkSpecDefaultEntry) {
             addManifestAttribute(m, entries, "Build-Jdk-Spec", 
System.getProperty("java.specification.version"));
         }
@@ -714,8 +715,7 @@
      * @return the parsed timestamp, may be <code>null</code> if 
<code>null</code> input or input contains only 1
      *         character
      * @since 3.5.0
-     * @throws IllegalArgumentException if the outputTimestamp is neither ISO 
8601 nor an integer, or it's not within
-     *             the valid range 1980-01-01T00:00:02Z to 2099-12-31T23:59:59Z
+     * @throws IllegalArgumentException if the outputTimestamp is neither ISO 
8601 nor an integer
      * @deprecated Use {@link #parseBuildOutputTimestamp(String)} instead.
      */
     @Deprecated
@@ -751,10 +751,7 @@
      * @return the parsed timestamp as an {@code Optional<Instant>}, {@code 
empty} if input is {@code null} or input
      *         contains only 1 character (not a number)
      * @since 3.6.0
-     * @throws IllegalArgumentException if the outputTimestamp is neither ISO 
8601 nor an integer, or it's not within
-     *             the valid range 1980-01-01T00:00:02Z to 
2099-12-31T23:59:59Z as defined by
-     *             <a 
href="https://pkwaredownloads.blob.core.windows.net/pem/APPNOTE.txt";>ZIP 
application note</a>,
-     *             section 4.4.6.
+     * @throws IllegalArgumentException if the outputTimestamp is neither ISO 
8601 nor an integer.
      * @see <a 
href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=74682318";>Maven
 Wiki "Reproducible/Verifiable
      *      Builds"</a>
      */
@@ -772,11 +769,6 @@
         // Number representing seconds since the epoch
         if (isNumeric(outputTimestamp)) {
             final Instant date = 
Instant.ofEpochSecond(Long.parseLong(outputTimestamp));
-
-            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 Optional.of(date);
         }
 
@@ -786,11 +778,6 @@
                     .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 Optional.of(date);
         } catch (DateTimeParseException pe) {
             throw new IllegalArgumentException(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maven-archiver-3.6.4/src/site/site.xml 
new/maven-archiver-3.6.5/src/site/site.xml
--- old/maven-archiver-3.6.4/src/site/site.xml  2025-08-07 10:55:20.000000000 
+0200
+++ new/maven-archiver-3.6.5/src/site/site.xml  2025-10-05 14:24:06.000000000 
+0200
@@ -19,13 +19,8 @@
 under the License.
 -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.8.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-         xsi:schemaLocation="http://maven.apache.org/DECORATION/1.8.0 
https://maven.apache.org/xsd/decoration-1.8.0.xsd";>
-  <skin>
-    <groupId>org.apache.maven.skins</groupId>
-    <artifactId>maven-fluido-skin</artifactId>
-    <version>1.9</version>
-  </skin>
+<site xmlns="http://maven.apache.org/SITE/2.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+      xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
https://maven.apache.org/xsd/site-2.0.0.xsd";>
   <body>
     <menu name="Overview">
       <item name="Introduction" href="index.html"/>
@@ -45,4 +40,4 @@
       <item name="Use Your Own Manifest File" 
href="examples/manifestFile.html"/>
     </menu>
   </body>
-</project>
+</site>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maven-archiver-3.6.4/src/site/xdoc/index.xml.vm 
new/maven-archiver-3.6.5/src/site/xdoc/index.xml.vm
--- old/maven-archiver-3.6.4/src/site/xdoc/index.xml.vm 2025-08-07 
10:55:20.000000000 +0200
+++ new/maven-archiver-3.6.5/src/site/xdoc/index.xml.vm 2025-10-05 
14:24:06.000000000 +0200
@@ -33,8 +33,7 @@
         for that plugin.
       </p>
 
-      <source>
-&lt;<a href="#class_archive">archive</a>&gt;
+      <source>&lt;<a href="#class_archive">archive</a>&gt;
   &lt;addMavenDescriptor/&gt;
   &lt;compress/&gt;
   &lt;forced/&gt;
@@ -67,48 +66,51 @@
       &lt;/manifestEntries&gt;
     &lt;manifestSection/&gt;
   &lt;/manifestSections&gt;
-&lt;/archive&gt;
-      </source>
+&lt;/archive&gt;</source>
 
       <a name="class_archive"/>
       <subsection name="archive">
+        <p>The <code>&lt;archive&gt;</code> element is the root of the 
archiver configuration.
+        The following table lists all of the possible child elements.</p>
         <table>
           <tr>
             <th>Element</th>
-            <th>Description</th>
             <th>Type</th>
             <th>Since</th>
+            <th>Description</th>
           </tr>
           <tr>
-            <td>addMavenDescriptor</td>
+            <td><code>addMavenDescriptor</code></td>
+            <td><code>boolean</code></td>
+            <td></td>
             <td>
               Whether the created archive will contain these two Maven files:
               <ul>
                 <li>
-                  The pom file, located in the archive in
+                  The <code>pom.xml</code> file, located in the archive in
                   <code>META-INF/maven/${groupId}/${artifactId}/pom.xml</code>
                 </li>
                 <li>
-                  A <a href="#pom-properties-content">pom.properties</a> file,
+                  A <code><a 
href="#pom-properties-content">pom.properties</a></code> file,
                   located in the archive in 
<code>META-INF/maven/${groupId}/${artifactId}/pom.properties</code>
                 </li>
               </ul>
               The default value is <code>true</code>.
             </td>
-            <td>boolean</td>
-            <td></td>
           </tr>
           <tr>
-            <td>compress</td>
+            <td><code>compress</code></td>
+            <td><code>boolean</code></td>
+            <td></td>
             <td>
               Activate compression for the archive.
               The default value is <code>true</code>.
             </td>
-            <td>boolean</td>
-            <td></td>
           </tr>
           <tr>
-            <td>forced</td>
+            <td><code>forced</code></td>
+            <td><code>boolean</code></td>
+            <td>2.2</td>
             <td>
               Whether recreating the archive is forced (default) or not. 
Setting
               this option to <code>false</code>, means that the archiver 
should compare the
@@ -125,11 +127,11 @@
               </p>
               The default value is <code>true</code>.
             </td>
-            <td>boolean</td>
-            <td>2.2</td>
           </tr>
           <tr>
-            <td>index</td>
+            <td><code>index</code></td>
+            <td><code>boolean</code></td>
+            <td></td>
             <td>
               <strong>Deprecated:</strong> See <a 
href="https://bugs.openjdk.org/browse/JDK-8305597";>JDK-8305597</a>
               <p>
@@ -140,39 +142,37 @@
                 The default value is <code>false</code>.
               </p>
             </td>
-            <td>boolean</td>
-            <td></td>
           </tr>
           <tr>
-            <td>pomPropertiesFile</td>
+            <td><code>pomPropertiesFile</code></td>
+            <td><code>File</code></td>
+            <td>2.3</td>
             <td>
               Use this to override the auto created
               <a href="#pom-properties-content">pom.properties</a> file
               (only if <code>addMavenDescriptor</code> is set to 
<code>true</code>)
             </td>
-            <td>File</td>
-            <td>2.3</td>
           </tr>
           <tr>
-            <td>manifestFile</td>
-            <td>With this you can supply your own manifest file.</td>
-            <td>File</td>
+            <td><code>manifestFile</code></td>
+            <td><code>File</code></td>
             <td></td>
+            <td>With this you can supply your own manifest file.</td>
           </tr>
           <tr>
-            <td><a href="#class_manifest">manifest</a></td>
+            <td><code><a href="#class_manifest">manifest</a></code></td>
             <td></td>
             <td></td>
             <td></td>
           </tr>
           <tr>
-            <td>manifestEntries</td>
-            <td>A list of key/value pairs to add to the manifest.</td>
-            <td>Map</td>
+            <td><code>manifestEntries</code></td>
+            <td><code>Map</code></td>
             <td></td>
+            <td>A list of key/value pairs to add to the manifest.</td>
           </tr>
           <tr>
-            <td><a href="#class_manifestSection">manifestSections</a></td>
+            <td><code><a 
href="#class_manifestSection">manifestSections</a></code></td>
             <td></td>
             <td></td>
             <td></td>
@@ -183,98 +183,100 @@
       <a name="pom-properties-content"/>
       <subsection name="pom.properties content">
         <p>
-          The auto created <code>pom.properties</code> file will contain the
+          The auto created 
<code>META-INF/maven/${groupId}/${artifactId}/pom.properties</code> file will 
contain the
           following content:
         </p>
-        <source>
-artifactId=\${project.artifactId}
+        <source>artifactId=\${project.artifactId}
 groupId=\${project.groupId}
 version=\${project.version}</source>
       </subsection>
 
       <a name="class_manifest"/>
       <subsection name="manifest">
+        <p>The <code>&lt;manifest&gt;</code> element configures main section 
of <code>META-INF/MANIFEST.MF</code>.
+        The following table lists all of the possible child elements.</p>
         <table>
           <tr>
             <th>Element</th>
-            <th>Description</th>
             <th>Type</th>
             <th>Since</th>
+            <th>Description</th>
           </tr>
           <tr>
-            <td>addClasspath</td>
+            <td><code>addClasspath</code></td>
+            <td><code>boolean</code></td>
+            <td></td>
             <td>
               Whether to create a <code>Class-Path</code> manifest entry.
               The default value is <code>false</code>.
             </td>
-            <td>boolean</td>
-            <td></td>
           </tr>
           <tr>
-            <td>addDefaultEntries</td>
+            <td><code>addDefaultEntries</code></td>
+            <td><code>boolean</code></td>
+            <td>3.4.0</td>
             <td>
               If the manifest will contain these entries:
-              <source>
-Created-By: Maven Archiver ${project.version}
-Build-Jdk-Spec: ${java.specification.version}</source>
-              Since 3.5.0, the default value of <code>Created-By</code> entry 
can be overridden using
+              <source>Created-By: Maven Archiver ${project.version}
+Build-Jdk-Spec: ${java.specification.version}
+Java-Version: &#36;{project maven.compiler.release/target}</source>
+              Since 3.5.0, the default value of <code>Created-By</code> entry 
can be overridden (usually by plugin code) using
               <a 
href="./apidocs/org/apache/maven/archiver/MavenArchiver.html">MavenArchiver.setCreatedBy(...)</a>
 API.<br />
+              Since 3.6.5, <code>Java-Version</code> entry is discovered by
+              <a 
href="./apidocs/org/apache/maven/archiver/BuildHelper.html">BuildHelper.discoverJavaRelease(...)</a>
 API.<br />
               The default value is <code>true</code>.
             </td>
-            <td>boolean</td>
-            <td>3.4.0</td>
           </tr>
           <tr>
-            <td>addDefaultImplementationEntries</td>
+            <td><code>addDefaultImplementationEntries</code></td>
+            <td><code>boolean</code></td>
+            <td>2.1 and 2.6</td>
             <td>
               If the manifest will contain these entries:
-              <source>
-Implementation-Title: \${project.name}
+              <source>Implementation-Title: \${project.name}
 Implementation-Version: \${project.version}
 Implementation-Vendor: \${project.organization.name}</source>
               The default value is <code>false</code>.
             </td>
-            <td>boolean</td>
-            <td>2.1 and 2.6</td>
           </tr>
           <tr>
-            <td>addDefaultSpecificationEntries</td>
+            <td><code>addDefaultSpecificationEntries</code></td>
+            <td><code>boolean</code></td>
+            <td>2.1</td>
             <td>
               If the manifest will contain these entries:
-              <source>
-Specification-Title: \${project.name}
+              <source>Specification-Title: \${project.name}
 Specification-Version: 
\${project.artifact.selectedVersion.majorVersion}.\${project.artifact.selectedVersion.minorVersion}
 Specification-Vendor: \${project.organization.name}</source>
               The default value is <code>false</code>.
             </td>
-            <td>boolean</td>
-            <td>2.1</td>
           </tr>
           <tr>
-            <td>addBuildEnvironmentEntries</td>
+            <td><code>addBuildEnvironmentEntries</code></td>
+            <td><code>boolean</code></td>
+            <td>3.4.0</td>
             <td>
               If the manifest will contain these entries:
-              <source>
-Build-Tool: ${maven.build.version}
+              <source>Build-Tool: ${maven.build.version}
 Build-Jdk: ${java.version} (${java.vendor})
 Build-Os:  ${os.name} (${os.version}; (${os.arch})</source>
               The default value is <code>false</code>.
             </td>
-            <td>boolean</td>
-            <td>3.4.0</td>
           </tr>
           <tr>
-            <td>addExtensions</td>
+            <td><code>addExtensions</code></td>
+            <td><code>boolean</code></td>
+            <td></td>
             <td>
               Whether to create an <code>Extension-List</code> manifest
               entry.
               The default value is <code>false</code>.
             </td>
-            <td>boolean</td>
-            <td></td>
           </tr>
           <tr>
-            <td>classpathLayoutType</td>
+            <td><code>classpathLayoutType</code></td>
+            <td><code>String</code></td>
+            <td>2.4</td>
             <td>
               The type of layout to use when formatting entries in the created
               <code>Class-Path</code>. Valid values are: <code>simple</code>,
@@ -285,21 +287,21 @@
               <b>must</b> also set <code>customClasspathLayout</code>.
               The default value is <code>simple</code>.
             </td>
-            <td>String</td>
-            <td>2.4</td>
           </tr>
           <tr>
-            <td>classpathPrefix</td>
+            <td><code>classpathPrefix</code></td>
+            <td><code>String</code></td>
+            <td></td>
             <td>
               A text that will be prefixed to all your <code>Class-Path</code>
               entries.
               The default value is <code>&quot;&quot;</code>.
             </td>
-            <td>String</td>
-            <td></td>
           </tr>
           <tr>
-            <td>customClasspathLayout</td>
+            <td><code>customClasspathLayout</code></td>
+            <td><code>String</code></td>
+            <td>2.4</td>
             <td>
               The layout expression to use when the layout type set in
               <code>classpathLayoutType</code> has the value 
<code>custom</code>.
@@ -312,55 +314,55 @@
               <b>Note:</b> If you specify a layout type of <code>custom</code>
               you <b>must</b> set this layout expression.
             </td>
-            <td>String</td>
-            <td>2.4</td>
           </tr>
           <tr>
-            <td>mainClass</td>
-            <td>The <code>Main-Class</code> manifest entry.</td>
-            <td>String</td>
+            <td><code>mainClass</code></td>
+            <td><code>String</code></td>
             <td></td>
+            <td>The <code>Main-Class</code> manifest entry.</td>
           </tr>
           <tr>
-            <td>packageName</td>
-            <td>Package manifest entry.</td>
-            <td>String</td>
+            <td><code>packageName</code></td>
+            <td><code>String</code></td>
             <td></td>
+            <td>Package manifest entry.</td>
           </tr>
           <tr>
-            <td>useUniqueVersions</td>
+            <td><code>useUniqueVersions</code></td>
+            <td><code>boolean</code></td>
+            <td>2.4</td>
             <td>
               Whether to use unique timestamp Snapshot versions rather than 
-SNAPSHOT versions.
               The default value is <code>true</code>.
             </td>
-            <td>boolean</td>
-            <td>2.4</td>
           </tr>
         </table>
       </subsection>
 
       <a name="class_manifestSection"/>
       <subsection name="manifestSection">
+        <p>The <code>&lt;manifestSection&gt;</code> element configures 
sections of <code>META-INF/MANIFEST.MF</code>.
+        The following table lists all of the possible child elements.</p>
         <table>
           <tr>
             <th>Element</th>
-            <th>Description</th>
             <th>Type</th>
             <th>Since</th>
+            <th>Description</th>
           </tr>
           <tr>
-            <td>name</td>
+            <td><code>name</code></td>
+            <td><code>String</code></td>
+            <td></td>
             <td>
               The name of the section.
             </td>
-            <td>String</td>
-            <td></td>
           </tr>
           <tr>
-            <td>manifestEntries</td>
-            <td>A list of key/value pairs to add to the manifest.</td>
-            <td>Map</td>
+            <td><code>manifestEntries</code></td>
+            <td><code>Map</code></td>
             <td></td>
+            <td>A list of key/value pairs to add to the manifest.</td>
           </tr>
         </table>
       </subsection>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/maven-archiver-3.6.4/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
 
new/maven-archiver-3.6.5/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
--- 
old/maven-archiver-3.6.4/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
     2025-08-07 10:55:20.000000000 +0200
+++ 
new/maven-archiver-3.6.5/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
     2025-10-05 14:24:06.000000000 +0200
@@ -44,6 +44,7 @@
 import java.util.jar.Manifest;
 import java.util.stream.Stream;
 import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.handler.ArtifactHandler;
@@ -1426,26 +1427,6 @@
     }
 
     @ParameterizedTest
-    @ValueSource(
-            strings = {
-                "0",
-                "1",
-                "9",
-                "1980-01-01T00:00:01Z",
-                "2100-01-01T00:00Z",
-                "2100-02-28T23:59:59Z",
-                "2099-12-31T23:59:59-01:00",
-                "1980-01-01T00:15:35+01:00",
-                "1980-01-01T10:15:35+14:00"
-            })
-    void testThrownParseOutputTimestampInvalidRange(String outputTimestamp) {
-        // date is not within the valid range 1980-01-01T00:00:02Z to 
2099-12-31T23:59:59Z
-        assertThatExceptionOfType(IllegalArgumentException.class)
-                .isThrownBy(() -> parseBuildOutputTimestamp(outputTimestamp))
-                .withMessageContaining("is not within the valid range 
1980-01-01T00:00:02Z to 2099-12-31T23:59:59Z");
-    }
-
-    @ParameterizedTest
     @CsvSource({
         "2011-12-03T10:15:30+01,1322903730",
         "2019-10-05T20:37:42+02,1570300662",
@@ -1456,4 +1437,33 @@
     void testShortOffset(String value, long expected) {
         
assertThat(parseBuildOutputTimestamp(value)).contains(Instant.ofEpochSecond(expected));
     }
+
+    private long testReproducibleJarEntryTime(String name, String timestamp) 
throws Exception {
+        File jarFile = new File("target/test/dummy-" + name + ".jar");
+
+        MavenArchiver archiver = 
getMavenArchiver(getCleanJarArchiver(jarFile));
+        archiver.configureReproducibleBuild(timestamp);
+        archiver.createArchive(getDummySession(), getDummyProject(), new 
MavenArchiveConfiguration());
+
+        assertThat(jarFile).exists();
+        ZipFile zf = new ZipFile(jarFile);
+        ZipEntry ze = zf.getEntry("META-INF/MANIFEST.MF");
+        return ze.getTime();
+    }
+
+    /**
+     * before upgrading plexus archiver to 4.10.2 to benefit from 
https://github.com/codehaus-plexus/plexus-archiver/pull/388
+     * $ zipdetails target/test/dummy-1970.jar
+     * gives negative Extended Timestamp in Java, that is seen as some point 
in time in 2106 (zip spec is unsigned)
+     * 0027 Extra ID #0001        5455 'UT: Extended Timestamp'
+     * 0029   Length              0005
+     * 002B   Flags               '01 mod'
+     * 002C   Mod Time            FFFFF1FA 'Sun Feb  7 06:28:26 2106'
+     * @throws Exception
+     */
+    @Test
+    void testReproducibleJar19700101() throws Exception {
+        long entryTime = testReproducibleJarEntryTime("1970", "10");
+        assertThat(entryTime).isGreaterThanOrEqualTo(0);
+    }
 }

++++++ maven-archiver-build.xml ++++++
--- /var/tmp/diff_new_pack.5J998W/_old  2025-10-09 15:08:10.550857769 +0200
+++ /var/tmp/diff_new_pack.5J998W/_new  2025-10-09 15:08:10.554857937 +0200
@@ -10,7 +10,7 @@
 
   <property name="project.groupId" value="org.apache.maven"/>
   <property name="project.artifactId" value="maven-archiver"/>
-  <property name="project.version" value="3.6.4"/>
+  <property name="project.version" value="3.6.5"/>
   <property name="project.name" value="Apache Maven Archiver"/>
   <property name="project.organization.name" value="The Apache Software 
Foundation"/>
 

Reply via email to