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 2c7a9bc7..f25e099b 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 @@ -433,7 +433,7 @@ public static String[] buildCompilerArguments( args.add(value); } - if (!config.isFork()) { + if (!config.isFork() && !args.contains("-XDuseUnsharedTable=false")) { args.add("-XDuseUnsharedTable=true"); } 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 2dfd7a5d..a91ebd8c 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 @@ -497,6 +497,29 @@ public void testMultipleAddExports() { internalTest(compilerConfiguration, expectedArguments, "1.8"); } + @Test + public void testWithGivenUnsharedTable() { + List expectedArguments = new ArrayList<>(); + + CompilerConfiguration compilerConfiguration = new CompilerConfiguration(); + + // outputLocation + compilerConfiguration.setOutputLocation("/output"); + expectedArguments.add("-d"); + expectedArguments.add(new File("/output").getAbsolutePath()); + + // releaseVersion + compilerConfiguration.setReleaseVersion("6"); + expectedArguments.add("--release"); + expectedArguments.add("6"); + + // unshared table + compilerConfiguration.addCompilerCustomArgument("-XDuseUnsharedTable=false", null); + expectedArguments.add("-XDuseUnsharedTable=false"); + + internalTest(compilerConfiguration, expectedArguments, "11.0.1"); + } + /* This test fails on Java 1.4. The multiple parameters of the same source file cause an error, as it is interpreted as a DuplicateClass * Setting the size of the array to 3 is fine, but does not exactly test what it is supposed to - disabling the test for now public void testCommandLineTooLongWhenForking()