[MENFORCER-440] Fix pattern for Java 8 version
diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/RequireJavaVersion.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/RequireJavaVersion.java
index dcaeb68..1a37c49 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/RequireJavaVersion.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/RequireJavaVersion.java
@@ -42,7 +42,7 @@
@Named("requireJavaVersion")
public final class RequireJavaVersion extends AbstractVersionEnforcer {
- private static final Pattern JDK8_VERSION_PATTERN = Pattern.compile("([\\[(,]?)(1\\.8|8)([]),]?)");
+ private static final Pattern JDK8_VERSION_PATTERN = Pattern.compile("([\\d.]+)");
/**
* Display the normalized JDK version.
@@ -57,11 +57,20 @@
return;
}
+ if (!theVersion.contains("8")) {
+ super.setVersion(theVersion);
+ return;
+ }
+
Matcher matcher = JDK8_VERSION_PATTERN.matcher(theVersion);
StringBuffer result = new StringBuffer();
while (matcher.find()) {
- matcher.appendReplacement(result, "$11.8$3");
+ if ("8".equals(matcher.group(1))) {
+ matcher.appendReplacement(result, "1.8");
+ } else {
+ matcher.appendReplacement(result, "$1");
+ }
}
matcher.appendTail(result);
diff --git a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestRequireJavaVersion.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestRequireJavaVersion.java
index 38bb343..419dfac 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestRequireJavaVersion.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestRequireJavaVersion.java
@@ -140,14 +140,24 @@
return Stream.of(
Arguments.of("1.8", "1.8"),
Arguments.of("8", "1.8"),
+ Arguments.of(".8", ".8"),
+ Arguments.of("8.", "8."),
Arguments.of("8,)", "1.8,)"),
Arguments.of("[8,)", "[1.8,)"),
Arguments.of("(1.7,8]", "(1.7,1.8]"),
Arguments.of("[1.8,)", "[1.8,)"),
Arguments.of("(1.8,8]", "(1.8,1.8]"),
+ Arguments.of("(8,8]", "(1.8,1.8]"),
Arguments.of("(8,)", "(1.8,)"),
Arguments.of("[8]", "[1.8]"),
- Arguments.of("(9,11],[8]", "(9,11],[1.8]"));
+ Arguments.of("(9,11],[8]", "(9,11],[1.8]"),
+ Arguments.of("(11.0.18", "(11.0.18"),
+ Arguments.of("(15.1.8", "(15.1.8"),
+ Arguments.of("(15.1.2", "(15.1.2"),
+ Arguments.of("18", "18"),
+ Arguments.of("18.", "18."),
+ Arguments.of(".18", ".18"),
+ Arguments.of("38", "38"));
}
@ParameterizedTest