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

cstamas pushed a commit to branch maven-3.9.x
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/maven-3.9.x by this push:
     new c2e4be2ee0 [3.9.x] MavenPluginJavaPrerequisiteChecker: Handle 8/1.8 
Java version in ranges as well (#11577)
c2e4be2ee0 is described below

commit c2e4be2ee0a71c5031a59e371a21c2719643efb5
Author: Tamas Cservenak <[email protected]>
AuthorDate: Fri Dec 19 14:31:16 2025 +0100

    [3.9.x] MavenPluginJavaPrerequisiteChecker: Handle 8/1.8 Java version in 
ranges as well (#11577)
    
    Java is consistent when reporting versions, but users are not. No need to 
go below 1.8, as Maven 3.9 is Java 8 only. This PR makes "8/1.8" work for 
ranges as well, not only for standalone version.
    
    Fixes #11575
---
 .../internal/MavenPluginJavaPrerequisiteChecker.java      |  6 +++++-
 .../internal/MavenPluginJavaPrerequisiteCheckerTest.java  | 15 +++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git 
a/maven-core/src/main/java/org/apache/maven/plugin/internal/MavenPluginJavaPrerequisiteChecker.java
 
b/maven-core/src/main/java/org/apache/maven/plugin/internal/MavenPluginJavaPrerequisiteChecker.java
index ebb0811714..d9c8f8fa30 100644
--- 
a/maven-core/src/main/java/org/apache/maven/plugin/internal/MavenPluginJavaPrerequisiteChecker.java
+++ 
b/maven-core/src/main/java/org/apache/maven/plugin/internal/MavenPluginJavaPrerequisiteChecker.java
@@ -47,9 +47,13 @@ public void accept(PluginDescriptor pluginDescriptor) {
     }
 
     boolean matchesVersion(String requiredVersion, String currentVersion) {
+        // Java 8 is consistent: it will always say "1.8...". Users are not 
consistent.
+        if (!requiredVersion.contains("1.8") && 
currentVersion.startsWith("1.8")) {
+            currentVersion = currentVersion.substring(2);
+        }
         VersionConstraint constraint;
         try {
-            constraint = 
versionScheme.parseVersionConstraint(requiredVersion.equals("8") ? "1.8" : 
requiredVersion);
+            constraint = versionScheme.parseVersionConstraint(requiredVersion);
         } catch (InvalidVersionSpecificationException e) {
             throw new IllegalArgumentException("Invalid 'requiredJavaVersion' 
given in plugin descriptor", e);
         }
diff --git 
a/maven-core/src/test/java/org/apache/maven/plugin/internal/MavenPluginJavaPrerequisiteCheckerTest.java
 
b/maven-core/src/test/java/org/apache/maven/plugin/internal/MavenPluginJavaPrerequisiteCheckerTest.java
index 5213f97b9a..fec2b53a2a 100644
--- 
a/maven-core/src/test/java/org/apache/maven/plugin/internal/MavenPluginJavaPrerequisiteCheckerTest.java
+++ 
b/maven-core/src/test/java/org/apache/maven/plugin/internal/MavenPluginJavaPrerequisiteCheckerTest.java
@@ -30,7 +30,22 @@ public class MavenPluginJavaPrerequisiteCheckerTest {
     public void testMatchesVersion() {
         MavenPluginJavaPrerequisiteChecker checker = new 
MavenPluginJavaPrerequisiteChecker();
         assertTrue(checker.matchesVersion("8", "1.8"));
+        assertTrue(checker.matchesVersion("[8,)", "1.8"));
+        assertTrue(checker.matchesVersion("(,8]", "1.8"));
+        assertFalse(checker.matchesVersion("(,8)", "1.8"));
         assertTrue(checker.matchesVersion("8", "9.0.1+11"));
+        assertTrue(checker.matchesVersion("[8,)", "9.0.1+11"));
+        assertFalse(checker.matchesVersion("(,8]", "9.0.1+11"));
+        assertFalse(checker.matchesVersion("(,8)", "9.0.1+11"));
+        assertTrue(checker.matchesVersion("1.8", "1.8"));
+        assertTrue(checker.matchesVersion("[1.8,)", "1.8"));
+        assertTrue(checker.matchesVersion("(,1.8]", "1.8"));
+        assertFalse(checker.matchesVersion("(,1.8)", "1.8"));
+        assertTrue(checker.matchesVersion("1.8", "9.0.1+11"));
+        assertTrue(checker.matchesVersion("[1.8,)", "9.0.1+11"));
+        assertFalse(checker.matchesVersion("(,1.8]", "9.0.1+11"));
+        assertFalse(checker.matchesVersion("(,1.8)", "9.0.1+11"));
+
         assertTrue(checker.matchesVersion("1.0", "1.8"));
         assertTrue(checker.matchesVersion("1.8", "9.0.1+11"));
         assertFalse(checker.matchesVersion("[1.0,2],[3,4]", "2.1"));

Reply via email to