diff --git a/plexus-compiler-its/pom.xml b/plexus-compiler-its/pom.xml
index 3fa5a7e62..e2ac1b1d7 100644
--- a/plexus-compiler-its/pom.xml
+++ b/plexus-compiler-its/pom.xml
@@ -15,7 +15,7 @@
4.13.2
- 17
+ 21
true
diff --git a/plexus-compiler-its/src/main/it/error-prone-compiler/pom.xml b/plexus-compiler-its/src/main/it/error-prone-compiler/pom.xml
index a50cee55d..5a8896259 100644
--- a/plexus-compiler-its/src/main/it/error-prone-compiler/pom.xml
+++ b/plexus-compiler-its/src/main/it/error-prone-compiler/pom.xml
@@ -49,6 +49,7 @@
true
-XDcompilePolicy=simple
+ -XDaddTypeAnnotationsToSymbol=true
-Xplugin:ErrorProne
--should-stop=ifError=FLOW
-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
diff --git a/plexus-compiler-its/src/main/it/issues-351/pom.xml b/plexus-compiler-its/src/main/it/issues-351/pom.xml
index 15ffe11a6..5eb49dd2f 100644
--- a/plexus-compiler-its/src/main/it/issues-351/pom.xml
+++ b/plexus-compiler-its/src/main/it/issues-351/pom.xml
@@ -55,6 +55,7 @@
-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED
-XDcompilePolicy=simple
+ -XDaddTypeAnnotationsToSymbol=true
--should-stop=ifError=FLOW
-Xplugin:ErrorProne
-Xep:DeadException:WARN
diff --git a/plexus-compiler-test/src/main/java/org/codehaus/plexus/compiler/AbstractCompilerTest.java b/plexus-compiler-test/src/main/java/org/codehaus/plexus/compiler/AbstractCompilerTest.java
index 026e0b4a0..1426caf24 100644
--- a/plexus-compiler-test/src/main/java/org/codehaus/plexus/compiler/AbstractCompilerTest.java
+++ b/plexus-compiler-test/src/main/java/org/codehaus/plexus/compiler/AbstractCompilerTest.java
@@ -310,4 +310,20 @@ protected String getJavaVersion() {
return javaVersion;
}
+
+ /**
+ * Returns the feature version of the running JDK: 8 for {@code 1.8.x}, otherwise the leading number of
+ * {@code java.version}, such as 17 or 27.
+ */
+ protected int getJavaFeatureVersion() {
+ String javaVersion = System.getProperty("java.version");
+ if (javaVersion.startsWith("1.")) {
+ javaVersion = javaVersion.substring(2);
+ }
+ int end = 0;
+ while (end < javaVersion.length() && Character.isDigit(javaVersion.charAt(end))) {
+ end++;
+ }
+ return Integer.parseInt(javaVersion.substring(0, end));
+ }
}
diff --git a/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerErrorsAsWarningsTest.java b/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerErrorsAsWarningsTest.java
index 86e118d08..505c1bbe3 100644
--- a/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerErrorsAsWarningsTest.java
+++ b/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerErrorsAsWarningsTest.java
@@ -36,11 +36,8 @@ protected int expectedWarnings() {
@Override
protected Collection expectedOutputFiles() {
- String javaVersion = getJavaVersion();
- if (javaVersion.contains("11")
- || javaVersion.contains("17")
- || javaVersion.contains("21")
- || javaVersion.contains("25")) {
+ // assert is a keyword since Java 1.4, so ReservedWord does not compile on a modern source level
+ if (getJavaFeatureVersion() >= 9) {
return Arrays.asList(
"org/codehaus/foo/Deprecation.class",
"org/codehaus/foo/ExternalDeps.class",
diff --git a/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerFailOnWarningsTest.java b/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerFailOnWarningsTest.java
index 6dc10e0cf..2058b38f0 100644
--- a/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerFailOnWarningsTest.java
+++ b/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerFailOnWarningsTest.java
@@ -29,12 +29,8 @@ protected int expectedWarnings() {
@Override
protected Collection expectedOutputFiles() {
- String javaVersion = getJavaVersion();
- if (javaVersion.contains("9.0")
- || javaVersion.contains("11")
- || javaVersion.contains("17")
- || javaVersion.contains("21")
- || javaVersion.contains("25")) {
+ // assert is a keyword since Java 1.4, so ReservedWord does not compile on a modern source level
+ if (getJavaFeatureVersion() >= 9) {
return Arrays.asList(
"org/codehaus/foo/Deprecation.class",
"org/codehaus/foo/ExternalDeps.class",
diff --git a/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerTest.java b/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerTest.java
index e8422d8e0..4082d7010 100644
--- a/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerTest.java
+++ b/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerTest.java
@@ -62,12 +62,8 @@ protected int expectedWarnings() {
@Override
protected Collection expectedOutputFiles() {
- String javaVersion = getJavaVersion();
- if (javaVersion.contains("9.0")
- || javaVersion.contains("11")
- || javaVersion.contains("17")
- || javaVersion.contains("21")
- || javaVersion.contains("25")) {
+ // assert is a keyword since Java 1.4, so ReservedWord does not compile on a modern source level
+ if (getJavaFeatureVersion() >= 9) {
return Arrays.asList(
"org/codehaus/foo/Deprecation.class",
"org/codehaus/foo/ExternalDeps.class",
diff --git a/plexus-compilers/plexus-compiler-javac-errorprone/pom.xml b/plexus-compilers/plexus-compiler-javac-errorprone/pom.xml
index f8e96af38..60e51ba00 100644
--- a/plexus-compilers/plexus-compiler-javac-errorprone/pom.xml
+++ b/plexus-compilers/plexus-compiler-javac-errorprone/pom.xml
@@ -16,7 +16,7 @@
See https://errorprone.info
- 17
+ 21
diff --git a/plexus-compilers/plexus-compiler-javac-errorprone/src/site/markdown/index.md b/plexus-compilers/plexus-compiler-javac-errorprone/src/site/markdown/index.md
index aa7f27659..efc5dbf5a 100644
--- a/plexus-compilers/plexus-compiler-javac-errorprone/src/site/markdown/index.md
+++ b/plexus-compilers/plexus-compiler-javac-errorprone/src/site/markdown/index.md
@@ -6,4 +6,4 @@ with error-prone static analysis checks enabled.
See https://errorprone.info
-**Requires** `JDK 17+`
+**Requires** `JDK 21+`
diff --git a/plexus-compilers/plexus-compiler-javac-errorprone/src/test/java/org/codehaus/plexus/compiler/javac/JavacErrorProneCompilerTest.java b/plexus-compilers/plexus-compiler-javac-errorprone/src/test/java/org/codehaus/plexus/compiler/javac/JavacErrorProneCompilerTest.java
index 2e6eb9a2a..aba9e12d1 100644
--- a/plexus-compilers/plexus-compiler-javac-errorprone/src/test/java/org/codehaus/plexus/compiler/javac/JavacErrorProneCompilerTest.java
+++ b/plexus-compilers/plexus-compiler-javac-errorprone/src/test/java/org/codehaus/plexus/compiler/javac/JavacErrorProneCompilerTest.java
@@ -17,7 +17,8 @@ protected int expectedWarnings() {
String javaVersion = getJavaVersion();
if (javaVersion.startsWith("1.8")) {
return 1;
- } else if (javaVersion.contains("21") || javaVersion.contains("25")) {
+ } else if (getJavaFeatureVersion() >= 21) {
+ // javac 21 and later also warn that -source 8 and -target 8 are obsolete
return 5;
}
return 2;
diff --git a/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/AbstractJavacCompilerTest.java b/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/AbstractJavacCompilerTest.java
index b6d3293a4..b3c6a4bf2 100644
--- a/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/AbstractJavacCompilerTest.java
+++ b/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/AbstractJavacCompilerTest.java
@@ -61,16 +61,12 @@ protected String getRoleHint() {
@Override
protected int expectedErrors() {
- String javaVersion = getJavaVersion();
- if (javaVersion.contains("11")
- || javaVersion.contains("17")
- || javaVersion.contains("21")
- || javaVersion.contains("25")) {
+ if (getJavaFeatureVersion() >= 11) {
return 5;
}
// javac output changed for misspelled modifiers starting in 1.6...they now generate 2 errors per occurrence,
// not one.
- if ("1.5".compareTo(javaVersion) < 0) {
+ if ("1.5".compareTo(getJavaVersion()) < 0) {
return 4;
} else {
return 3;
@@ -79,103 +75,46 @@ protected int expectedErrors() {
@Override
protected int expectedWarnings() {
- String javaVersion = getJavaVersion();
- if (javaVersion.contains("11")
- || javaVersion.contains("17")
- || javaVersion.contains("21")
- || javaVersion.contains("25")) {
+ if (getJavaFeatureVersion() >= 11) {
return 1;
}
+ String javaVersion = getJavaVersion();
if (javaVersion.contains("1.8")) {
// lots of new warnings about obsoletions for future releases
return 30;
}
-
if ("1.6".compareTo(javaVersion) < 0) {
// with 1.7 some warning with bootstrap class path not set in conjunction with -source 1.3
return 9;
}
-
return 2;
}
@Override
public String getTargetVersion() {
- String javaVersion = getJavaVersion();
- if (javaVersion.contains("9.0")) {
+ int javaFeatureVersion = getJavaFeatureVersion();
+ if (javaFeatureVersion >= 11) {
+ return Integer.toString(javaFeatureVersion);
+ } else if (getJavaVersion().contains("9.0")) {
return "1.7";
- } else if (javaVersion.contains("11")) {
- return "11";
- } else if (javaVersion.contains("14")) {
- return "14";
- } else if (javaVersion.contains("15")) {
- return "15";
- } else if (javaVersion.contains("16")) {
- return "16";
- } else if (javaVersion.contains("17")) {
- return "17";
- } else if (javaVersion.contains("18")) {
- return "18";
- } else if (javaVersion.contains("19")) {
- return "19";
- } else if (javaVersion.contains("20")) {
- return "20";
- } else if (javaVersion.contains("21")) {
- return "21";
- } else if (javaVersion.contains("22")) {
- return "22";
- } else if (javaVersion.contains("23")) {
- return "23";
- } else if (javaVersion.contains("24")) {
- return "24";
- } else if (javaVersion.contains("25")) {
- return "25";
}
return super.getTargetVersion();
}
@Override
public String getSourceVersion() {
- String javaVersion = getJavaVersion();
- if (javaVersion.contains("9.0")) {
+ int javaFeatureVersion = getJavaFeatureVersion();
+ if (javaFeatureVersion >= 11) {
+ return Integer.toString(javaFeatureVersion);
+ } else if (getJavaVersion().contains("9.0")) {
return "1.7";
- } else if (javaVersion.contains("11")) {
- return "11";
- } else if (javaVersion.contains("14")) {
- return "14";
- } else if (javaVersion.contains("15")) {
- return "15";
- } else if (javaVersion.contains("16")) {
- return "16";
- } else if (javaVersion.contains("17")) {
- return "17";
- } else if (javaVersion.contains("18")) {
- return "18";
- } else if (javaVersion.contains("19")) {
- return "19";
- } else if (javaVersion.contains("20")) {
- return "20";
- } else if (javaVersion.contains("21")) {
- return "21";
- } else if (javaVersion.contains("22")) {
- return "22";
- } else if (javaVersion.contains("23")) {
- return "23";
- } else if (javaVersion.contains("24")) {
- return "24";
- } else if (javaVersion.contains("25")) {
- return "25";
}
return super.getSourceVersion();
}
@Override
protected Collection expectedOutputFiles() {
- String javaVersion = getJavaVersion();
- if (javaVersion.contains("11")
- || javaVersion.contains("17")
- || javaVersion.contains("21")
- || javaVersion.contains("25")) {
+ if (getJavaFeatureVersion() >= 11) {
return Arrays.asList(
"org/codehaus/foo/Deprecation.class",
"org/codehaus/foo/ExternalDeps.class",
diff --git a/pom.xml b/pom.xml
index a001176cd..d9241c184 100644
--- a/pom.xml
+++ b/pom.xml
@@ -46,7 +46,7 @@
true
2026-09-09T11:47:52Z
1.9.21
- 2.37.0
+ 2.50.0
1.1.0
false
clean install