diff --git a/plexus-compiler-api/pom.xml b/plexus-compiler-api/pom.xml index 03598c50..48820067 100644 --- a/plexus-compiler-api/pom.xml +++ b/plexus-compiler-api/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-compiler - 2.10.1-SNAPSHOT + 2.11.0-SNAPSHOT plexus-compiler-api diff --git a/plexus-compiler-its/pom.xml b/plexus-compiler-its/pom.xml index 9c3b9781..928a089d 100644 --- a/plexus-compiler-its/pom.xml +++ b/plexus-compiler-its/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-compiler - 2.10.1-SNAPSHOT + 2.11.0-SNAPSHOT plexus-compiler-its diff --git a/plexus-compiler-its/src/main/it/MCOMPILER-346-mre b/plexus-compiler-its/src/main/it/MCOMPILER-346-mre new file mode 160000 index 00000000..33fdb68f --- /dev/null +++ b/plexus-compiler-its/src/main/it/MCOMPILER-346-mre @@ -0,0 +1 @@ +Subproject commit 33fdb68fb6ce2042db7945b873c7b57ee3f65157 diff --git a/plexus-compiler-its/src/main/it/simple-eclipse-compiler/pom.xml b/plexus-compiler-its/src/main/it/simple-eclipse-compiler/pom.xml index 5beaa3d0..a4efe0c0 100644 --- a/plexus-compiler-its/src/main/it/simple-eclipse-compiler/pom.xml +++ b/plexus-compiler-its/src/main/it/simple-eclipse-compiler/pom.xml @@ -55,7 +55,7 @@ eclipse - + org.codehaus.plexus plexus-compiler-api @pom.version@ diff --git a/plexus-compiler-manager/pom.xml b/plexus-compiler-manager/pom.xml index 65c6c9a3..9a5c2ec0 100644 --- a/plexus-compiler-manager/pom.xml +++ b/plexus-compiler-manager/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-compiler - 2.10.1-SNAPSHOT + 2.11.0-SNAPSHOT plexus-compiler-manager diff --git a/plexus-compiler-test/pom.xml b/plexus-compiler-test/pom.xml index 4bbd1525..7d03d00e 100644 --- a/plexus-compiler-test/pom.xml +++ b/plexus-compiler-test/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-compiler - 2.10.1-SNAPSHOT + 2.11.0-SNAPSHOT plexus-compiler-test diff --git a/plexus-compilers/plexus-compiler-aspectj/pom.xml b/plexus-compilers/plexus-compiler-aspectj/pom.xml index 24c7fac9..9af23632 100644 --- a/plexus-compilers/plexus-compiler-aspectj/pom.xml +++ b/plexus-compilers/plexus-compiler-aspectj/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-compilers - 2.10.1-SNAPSHOT + 2.11.0-SNAPSHOT plexus-compiler-aspectj diff --git a/plexus-compilers/plexus-compiler-csharp/pom.xml b/plexus-compilers/plexus-compiler-csharp/pom.xml index 40fef831..d58965be 100644 --- a/plexus-compilers/plexus-compiler-csharp/pom.xml +++ b/plexus-compilers/plexus-compiler-csharp/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-compilers - 2.10.1-SNAPSHOT + 2.11.0-SNAPSHOT plexus-compiler-csharp diff --git a/plexus-compilers/plexus-compiler-eclipse/pom.xml b/plexus-compilers/plexus-compiler-eclipse/pom.xml index 3374608d..b5f5b41c 100644 --- a/plexus-compilers/plexus-compiler-eclipse/pom.xml +++ b/plexus-compilers/plexus-compiler-eclipse/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-compilers - 2.10.1-SNAPSHOT + 2.11.0-SNAPSHOT plexus-compiler-eclipse diff --git a/plexus-compilers/plexus-compiler-j2objc/pom.xml b/plexus-compilers/plexus-compiler-j2objc/pom.xml index fc4c49f3..1c805e2a 100644 --- a/plexus-compilers/plexus-compiler-j2objc/pom.xml +++ b/plexus-compilers/plexus-compiler-j2objc/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-compilers - 2.10.1-SNAPSHOT + 2.11.0-SNAPSHOT plexus-compiler-j2objc diff --git a/plexus-compilers/plexus-compiler-javac-errorprone/pom.xml b/plexus-compilers/plexus-compiler-javac-errorprone/pom.xml index c1fd76b4..e54d25ca 100644 --- a/plexus-compilers/plexus-compiler-javac-errorprone/pom.xml +++ b/plexus-compilers/plexus-compiler-javac-errorprone/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-compilers - 2.10.1-SNAPSHOT + 2.11.0-SNAPSHOT plexus-compiler-javac-errorprone diff --git a/plexus-compilers/plexus-compiler-javac/pom.xml b/plexus-compilers/plexus-compiler-javac/pom.xml index 5aa5ef67..579a4b78 100644 --- a/plexus-compilers/plexus-compiler-javac/pom.xml +++ b/plexus-compilers/plexus-compiler-javac/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-compilers - 2.10.1-SNAPSHOT + 2.11.0-SNAPSHOT plexus-compiler-javac diff --git a/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/InProcessCompiler.java b/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/InProcessCompiler.java index c4374eee..65e7f6cc 100644 --- a/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/InProcessCompiler.java +++ b/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/InProcessCompiler.java @@ -3,8 +3,9 @@ import org.codehaus.plexus.compiler.CompilerConfiguration; import org.codehaus.plexus.compiler.CompilerException; import org.codehaus.plexus.compiler.CompilerResult; +import org.codehaus.plexus.logging.LogEnabled; -public interface InProcessCompiler { +public interface InProcessCompiler extends LogEnabled { CompilerResult compileInProcess(String[] args, final CompilerConfiguration config, String[] sourceFiles) throws CompilerException; 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 9297d3d4..a0c54090 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 @@ -70,6 +70,7 @@ import org.codehaus.plexus.compiler.CompilerOutputStyle; import org.codehaus.plexus.compiler.CompilerResult; import org.codehaus.plexus.component.annotations.Component; +import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.Os; import org.codehaus.plexus.util.StringUtils; @@ -106,6 +107,9 @@ public class JavacCompiler private List> javaccClasses = new CopyOnWriteArrayList<>(); + @Requirement + private InProcessCompiler inProcessCompiler; + // ---------------------------------------------------------------------- // // ---------------------------------------------------------------------- @@ -186,10 +190,10 @@ public CompilerResult performCompile( CompilerConfiguration config ) return result; } - protected InProcessCompiler inProcessCompiler() - { - return new org.codehaus.plexus.compiler.javac.JavaxToolsCompiler(); - } + protected InProcessCompiler inProcessCompiler() + { + return inProcessCompiler; + } protected static boolean isJava16() { diff --git a/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavaxToolsCompiler.java b/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavaxToolsCompiler.java index d0b0bd1b..b12a3244 100644 --- a/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavaxToolsCompiler.java +++ b/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavaxToolsCompiler.java @@ -18,12 +18,12 @@ * under the License. */ -import org.codehaus.plexus.compiler.Compiler; import org.codehaus.plexus.compiler.CompilerConfiguration; import org.codehaus.plexus.compiler.CompilerMessage; import org.codehaus.plexus.compiler.CompilerException; import org.codehaus.plexus.compiler.CompilerResult; import org.codehaus.plexus.component.annotations.Component; +import org.codehaus.plexus.logging.AbstractLogEnabled; import javax.tools.Diagnostic; import javax.tools.DiagnosticCollector; @@ -36,6 +36,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Locale; import java.util.concurrent.CopyOnWriteArrayList; /** @@ -43,8 +44,8 @@ * @author David M. Lloyd * @since 2.0 */ -@Component( role = Compiler.class ) -public class JavaxToolsCompiler implements InProcessCompiler +@Component( role = InProcessCompiler.class ) +public class JavaxToolsCompiler extends AbstractLogEnabled implements InProcessCompiler { /** * is that thread safe ??? @@ -57,7 +58,7 @@ protected JavaCompiler newJavaCompiler() return ToolProvider.getSystemJavaCompiler(); } - private List JAVA_COMPILERS = new CopyOnWriteArrayList<>(); + private final List JAVA_COMPILERS = new CopyOnWriteArrayList<>(); private JavaCompiler getJavaCompiler( CompilerConfiguration compilerConfiguration ) { @@ -111,14 +112,14 @@ public CompilerResult compileInProcess( String[] args, final CompilerConfigurati CompilerMessage.Kind.ERROR ); return new CompilerResult( false, Collections.singletonList( message ) ); } - final String sourceEncoding = config.getSourceEncoding(); - final Charset sourceCharset = sourceEncoding == null ? null : Charset.forName( sourceEncoding ); - final DiagnosticCollector collector = new DiagnosticCollector<>(); - try ( final StandardJavaFileManager standardFileManager = + String sourceEncoding = config.getSourceEncoding(); + Charset sourceCharset = sourceEncoding == null ? null : Charset.forName( sourceEncoding ); + DiagnosticCollector collector = new DiagnosticCollector<>(); + try ( StandardJavaFileManager standardFileManager = compiler.getStandardFileManager( collector, null, sourceCharset ) ) { - final Iterable fileObjects = + Iterable fileObjects = standardFileManager.getJavaFileObjectsFromStrings( Arrays.asList( sourceFiles ) ); /*(Writer out, @@ -130,14 +131,27 @@ public CompilerResult compileInProcess( String[] args, final CompilerConfigurati List arguments = Arrays.asList( args ); - final JavaCompiler.CompilationTask task = + JavaCompiler.CompilationTask task = compiler.getTask( null, standardFileManager, collector, arguments, null, fileObjects ); - final Boolean result = task.call(); - final ArrayList compilerMsgs = new ArrayList<>(); + Boolean result = task.call(); + List compilerMsgs = new ArrayList<>(); + for ( Diagnostic diagnostic : collector.getDiagnostics() ) { - CompilerMessage.Kind kind = convertKind(diagnostic); - String baseMessage = diagnostic.getMessage( null ); + CompilerMessage.Kind kind = convertKind( diagnostic ); + + String baseMessage; + try + { + baseMessage = diagnostic.getMessage( Locale.getDefault() ); + } + catch ( AssertionError e ) + { + // workaround for https://bugs.openjdk.java.net/browse/JDK-8210649 + getLogger().debug( "Ignore Issue get JavaCompiler Diagnostic message (see https://bugs.openjdk.java.net/browse/JDK-8210649):" + e.getMessage(), e ); + // in this case we try to replace the baseMessage with toString (hoping this does not throw a new exception.. + baseMessage = diagnostic.toString(); + } if ( baseMessage == null ) { continue; @@ -185,7 +199,6 @@ public CompilerResult compileInProcess( String[] args, final CompilerConfigurati finally { releaseJavaCompiler( compiler, config ); - } } diff --git a/plexus-compilers/pom.xml b/plexus-compilers/pom.xml index e2bdf9d8..886634f0 100644 --- a/plexus-compilers/pom.xml +++ b/plexus-compilers/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-compiler - 2.10.1-SNAPSHOT + 2.11.0-SNAPSHOT plexus-compilers diff --git a/pom.xml b/pom.xml index e57440a9..f550ba7b 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ plexus-compiler - 2.10.1-SNAPSHOT + 2.11.0-SNAPSHOT pom Plexus Compiler @@ -45,7 +45,7 @@ scm:git:git@github.com:codehaus-plexus/plexus-compiler.git 11 true - 2022-02-08T11:49:09Z + 2022-03-06T00:54:21Z 5.8.2 1.9.7.M3 2.11.0