You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2026/09/11 06:50:10 UTC

(maven-javadoc-plugin) branch master updated: Accept the 1.x spelling for the release version

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

slachiewicz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-javadoc-plugin.git


The following commit(s) were added to refs/heads/master by this push:
     new 89126154 Accept the 1.x spelling for the release version
89126154 is described below

commit 89126154b60328815f89c48988e4763d1b19d462
Author: Sylwester Lachiewicz <sl...@apache.org>
AuthorDate: Thu Sep 10 23:20:48 2026 +0200

    Accept the 1.x spelling for the release version
    
    javadoc's --release takes only the plain feature number and rejects 1.8
    with "release version 1.8 not supported". Mapping 1.5 to 1.8 onto 5 to 8
    matches what plexus-compiler does for javac, so a parent POM can derive
    maven.compiler.release from a child's target in either spelling.
---
 .../apache/maven/plugins/javadoc/AbstractJavadocMojo.java |  2 +-
 .../org/apache/maven/plugins/javadoc/JavadocUtil.java     | 15 +++++++++++++++
 .../org/apache/maven/plugins/javadoc/JavadocUtilTest.java |  9 +++++++++
 3 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java b/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
index 2214137b..69aa2dff 100644
--- a/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
+++ b/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
@@ -4581,7 +4581,7 @@ public abstract class AbstractJavadocMojo extends AbstractMojo {
 
         if (javadocRuntimeVersion.isAtLeast("9") && isReleaseSet()) {
             arguments.add("--release");
-            arguments.add(release);
+            arguments.add(JavadocUtil.toReleaseArgument(release));
         } else {
             addArgIfNotEmpty(arguments, "-source", JavadocUtil.quotedArgument(source));
         }
diff --git a/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java b/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java
index c8ab7086..58c9c415 100644
--- a/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java
+++ b/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java
@@ -1602,4 +1602,19 @@ public class JavadocUtil {
         }
         return false;
     }
+
+    /**
+     * Maps the {@code 1.x} spelling that {@code -source} accepts onto the plain feature number, the only
+     * form {@code --release} takes: {@code 1.8} becomes {@code 8}. Any other value is passed through
+     * unchanged, so the javadoc tool still reports releases it does not support.
+     *
+     * @param release the configured release version, never empty
+     * @return the value to pass to {@code --release}
+     */
+    public static String toReleaseArgument(String release) {
+        if (release.length() == 3 && release.startsWith("1.") && release.charAt(2) >= '1' && release.charAt(2) <= '9') {
+            return release.substring(2);
+        }
+        return release;
+    }
 }
diff --git a/src/test/java/org/apache/maven/plugins/javadoc/JavadocUtilTest.java b/src/test/java/org/apache/maven/plugins/javadoc/JavadocUtilTest.java
index 8c7b8f4a..5f118b83 100644
--- a/src/test/java/org/apache/maven/plugins/javadoc/JavadocUtilTest.java
+++ b/src/test/java/org/apache/maven/plugins/javadoc/JavadocUtilTest.java
@@ -749,4 +749,13 @@ class JavadocUtilTest {
             throw throwable;
         }
     }
+
+    @Test
+    void toReleaseArgumentMapsTheLegacySpelling() {
+        assertEquals("8", JavadocUtil.toReleaseArgument("1.8"));
+        assertEquals("5", JavadocUtil.toReleaseArgument("1.5"));
+        assertEquals("8", JavadocUtil.toReleaseArgument("8"));
+        assertEquals("17", JavadocUtil.toReleaseArgument("17"));
+        assertEquals("1.10", JavadocUtil.toReleaseArgument("1.10"));
+    }
 }