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