From 01e93cc16b6fd2bbc27b94a6d2916c043b6d8786 Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Wed, 25 Oct 2023 17:30:53 +0200 Subject: [PATCH 1/2] Support jdk 21 --- .github/workflows/maven.yml | 10 ++-------- .../javac/JavacErrorProneCompilerTest.java | 10 +++++----- .../compiler/javac/AbstractJavacCompilerTest.java | 15 ++++++++++++--- .../compiler/javac/JavaxToolsCompilerTest.java | 11 +++++++++++ 4 files changed, 30 insertions(+), 16 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 33aeb267..18993dc7 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -27,14 +27,8 @@ jobs: uses: codehaus-plexus/.github/.github/workflows/maven.yml@master with: jdk-fast-fail-build: '11' - jdk-matrix: '["11", "17", "20"]' - jdk-distribution-matrix: '["zulu", "temurin", "microsoft", "liberica","corretto"]' + jdk-matrix: '["11", "17", "21"]' + jdk-distribution-matrix: '["zulu", "temurin", "microsoft", "liberica", "corretto"]' os-matrix: '["ubuntu-latest","windows-latest", "macOS-latest"]' - matrix-exclude: '[ - { "jdk": "21-ea", "distribution": "corretto" }, - { "jdk": "21-ea", "distribution": "liberica" }, - { "jdk": "20", "distribution": "microsoft" }, - { "jdk": "21-ea", "distribution": "temurin" } - ]' maven_args: 'install javadoc:javadoc -e -B -V -fae -Pno-tests-if-not-on-osx' 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 242decfb..f1c21798 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 @@ -21,12 +21,12 @@ protected int expectedWarnings() String javaVersion = getJavaVersion(); if (javaVersion.startsWith("1.8")) { return 1; - } else { - if (javaVersion.contains("18") || javaVersion.contains("19") || javaVersion.contains("20")) { - return 5; - } - return 2; + } else if (javaVersion.contains("18") || javaVersion.contains("19") || javaVersion.contains("20")) { + return 5; + } else if (javaVersion.contains("21")) { + return 6; } + return 2; } @Override 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 8cf53bbb..dcbfc7ca 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 @@ -69,7 +69,8 @@ protected int expectedErrors() String javaVersion = getJavaVersion(); if (javaVersion.contains("9.0")||javaVersion.contains("11")||javaVersion.contains("14")|| javaVersion.contains("15")||javaVersion.contains("16")||javaVersion.contains("17")|| - javaVersion.contains("18")||javaVersion.contains("19")||javaVersion.contains("20")){ + javaVersion.contains("18")||javaVersion.contains("19")||javaVersion.contains("20")|| + javaVersion.contains("21")){ return 5; } // javac output changed for misspelled modifiers starting in 1.6...they now generate 2 errors per occurrence, not one. @@ -89,7 +90,8 @@ protected int expectedWarnings() String javaVersion = getJavaVersion(); if (javaVersion.contains("9.0")||javaVersion.contains("11")||javaVersion.contains("14")|| javaVersion.contains("15")||javaVersion.contains("16")||javaVersion.contains("17")|| - javaVersion.contains("18")||javaVersion.contains("19")||javaVersion.contains("20")){ + javaVersion.contains("18")||javaVersion.contains("19")||javaVersion.contains("20")|| + javaVersion.contains("21")){ return 1; } if (javaVersion.contains("1.8")){ @@ -137,6 +139,9 @@ public String getTargetVersion() if (javaVersion.contains("20")){ return "20"; } + if (javaVersion.contains("21")){ + return "21"; + } return super.getTargetVersion(); } @@ -175,6 +180,9 @@ public String getSourceVersion() if (javaVersion.contains("20")){ return "20"; } + if (javaVersion.contains("21")){ + return "21"; + } return super.getTargetVersion(); } @@ -184,7 +192,8 @@ protected Collection expectedOutputFiles() String javaVersion = getJavaVersion(); if (javaVersion.contains("9.0")||javaVersion.contains("11")||javaVersion.contains("14")|| javaVersion.contains("15")||javaVersion.contains("16")||javaVersion.contains("17")|| - javaVersion.contains("18")||javaVersion.contains("19")||javaVersion.contains("20") + javaVersion.contains("18")||javaVersion.contains("19")||javaVersion.contains("20")|| + javaVersion.contains("21") ){ return Arrays.asList( "org/codehaus/foo/Deprecation.class", "org/codehaus/foo/ExternalDeps.class", "org/codehaus/foo/Person.class" ); diff --git a/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/JavaxToolsCompilerTest.java b/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/JavaxToolsCompilerTest.java index b362f3be..598bad40 100644 --- a/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/JavaxToolsCompilerTest.java +++ b/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/JavaxToolsCompilerTest.java @@ -25,4 +25,15 @@ public class JavaxToolsCompilerTest extends AbstractJavacCompilerTest { // no op default is to javax.tools if available + + @Override + protected int expectedWarnings() { + String javaVersion = getJavaVersion(); + if (javaVersion.contains("21")) { + return 8; + } else { + return super.expectedWarnings(); + } + } + } From 7e10b92a090477155b0b1069ef91421e037f72ff Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Mon, 23 Oct 2023 21:06:29 +0200 Subject: [PATCH 2/2] Fix javac memory leak See https://github.com/apache/maven-mvnd/issues/897 --- .../plexus/compiler/javac/JavacCompiler.java | 5 ++++ .../javac/AbstractJavacCompilerTest.java | 29 +++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java b/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java index 5aa4e0d7..bbad6260 100644 --- a/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java +++ b/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java @@ -443,6 +443,11 @@ else if ( !suppressSource( config ) ) args.add( value ); } + if ( !config.isFork() ) + { + args.add( "-XDuseUnsharedTable=true" ); + } + return args.toArray( new String[0] ); } 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 dcbfc7ca..cfccb28a 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 @@ -326,6 +326,9 @@ public void testJRuntimeArguments() expectedArguments.add( "-source" ); expectedArguments.add( "1.3" ); + // unshared table + expectedArguments.add( "-XDuseUnsharedTable=true" ); + // customCompilerArguments Map customCompilerArguments = new LinkedHashMap<>(); customCompilerArguments.put( "-J-Duser.language=en_us", null ); @@ -367,6 +370,9 @@ public void testModulePathAnnotations() throws Exception expectedArguments.add( "--release" ); expectedArguments.add( "9" ); + // unshared table + expectedArguments.add( "-XDuseUnsharedTable=true" ); + internalTest( compilerConfiguration, expectedArguments, source); } @@ -395,6 +401,9 @@ public void testModulePath() throws Exception expectedArguments.add( "-source" ); expectedArguments.add( "1.3" ); + // unshared table + expectedArguments.add( "-XDuseUnsharedTable=true" ); + internalTest( compilerConfiguration, expectedArguments ); } @@ -421,6 +430,9 @@ public void testModuleVersion() expectedArguments.add( "--module-version" ); expectedArguments.add( "1.2.0-SNAPSHOT" ); + // unshared table + expectedArguments.add( "-XDuseUnsharedTable=true" ); + internalTest( compilerConfiguration, expectedArguments ); } @@ -440,7 +452,10 @@ public void testReleaseVersion() compilerConfiguration.setReleaseVersion( "6" ); expectedArguments.add( "--release" ); expectedArguments.add( "6" ); - + + // unshared table + expectedArguments.add( "-XDuseUnsharedTable=true" ); + internalTest( compilerConfiguration, expectedArguments ); } @@ -465,7 +480,10 @@ public void testFailOnWarning() expectedArguments.add( "1.1" ); expectedArguments.add( "-source" ); expectedArguments.add( "1.3" ); - + + // unshared table + expectedArguments.add( "-XDuseUnsharedTable=true" ); + internalTest( compilerConfiguration, expectedArguments ); } @@ -494,7 +512,10 @@ public void testMultipleAddExports() compilerConfiguration.addCompilerCustomArgument( "--add-exports", "FROM-MOD/package2=OTHER-MOD" ); expectedArguments.add( "--add-exports" ); expectedArguments.add( "FROM-MOD/package2=OTHER-MOD" ); - + + // unshared table + expectedArguments.add( "-XDuseUnsharedTable=true" ); + internalTest( compilerConfiguration, expectedArguments ); } @@ -639,5 +660,7 @@ private void populateArguments( CompilerConfiguration compilerConfiguration, Lis expectedArguments.add( "foo" ); expectedArguments.add( "bar" ); + + expectedArguments.add( "-XDuseUnsharedTable=true" ); } }