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"));