[Git][java-team/plexus-compiler][master] 6 commits: New upstream version 2.8.6

Emmanuel Bourg gitlab at salsa.debian.org
Sun Mar 1 19:58:57 GMT 2020



Emmanuel Bourg pushed to branch master at Debian Java Maintainers / plexus-compiler


Commits:
5ffb284c by Emmanuel Bourg at 2020-03-01T17:44:10+01:00
New upstream version 2.8.6
- - - - -
f6b92c0e by Emmanuel Bourg at 2020-03-01T17:44:10+01:00
Update upstream source from tag 'upstream/2.8.6'

Update to upstream version '2.8.6'
with Debian dir b54a2ada5d8660a9c4621179616c8bd2dcd9cc6a
- - - - -
f89d8202 by Emmanuel Bourg at 2020-03-01T17:45:10+01:00
Refreshed the patches

- - - - -
c7fe1921 by Emmanuel Bourg at 2020-03-01T17:45:17+01:00
Standards-Version updated to 4.5.0

- - - - -
becbf402 by Emmanuel Bourg at 2020-03-01T20:58:04+01:00
Ignore maven-enforcer-plugin

- - - - -
0c353425 by Emmanuel Bourg at 2020-03-01T20:58:23+01:00
Upload to unstable

- - - - -


26 changed files:

- .travis.yml
- debian/changelog
- debian/control
- debian/maven.ignoreRules
- debian/patches/missing-dependency-management-entries.patch
- plexus-compiler-api/pom.xml
- plexus-compiler-manager/pom.xml
- plexus-compiler-test/pom.xml
- plexus-compiler-test/src/main/java/org/codehaus/plexus/compiler/AbstractCompilerTest.java
- plexus-compilers/plexus-compiler-aspectj/pom.xml
- plexus-compilers/plexus-compiler-aspectj/src/main/java/org/codehaus/plexus/compiler/ajc/AspectJCompiler.java
- plexus-compilers/plexus-compiler-aspectj/src/test/java/org/codehaus/plexus/compiler/ajc/AspectJCompilerTest.java
- plexus-compilers/plexus-compiler-csharp/pom.xml
- plexus-compilers/plexus-compiler-csharp/src/main/java/org/codehaus/plexus/compiler/csharp/DefaultCSharpCompilerParser.java
- plexus-compilers/plexus-compiler-eclipse/pom.xml
- plexus-compilers/plexus-compiler-eclipse/src/main/java/org/codehaus/plexus/compiler/eclipse/EclipseJavaCompiler.java
- plexus-compilers/plexus-compiler-j2objc/pom.xml
- plexus-compilers/plexus-compiler-javac-errorprone/pom.xml
- plexus-compilers/plexus-compiler-javac/pom.xml
- plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java
- plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/AbstractJavacCompilerTest.java
- plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/ErrorMessageParserTest.java
- plexus-compilers/plexus-compiler-jikes/pom.xml
- plexus-compilers/pom.xml
- pom.xml
- src/site/apt/index.apt


Changes:

=====================================
.travis.yml
=====================================
@@ -1,10 +1,10 @@
 language: java
 jdk:
 
-  - oraclejdk8
-  - oraclejdk9
-  - openjdk7
-  
+  - openjdk8
+  - openjdk9
+  - openjdk11
+
 script: "mvn --show-version --errors --batch-mode clean verify -DredirectTestOutputToFile=false"
 
 cache:


=====================================
debian/changelog
=====================================
@@ -1,3 +1,12 @@
+plexus-compiler (2.8.6-1) unstable; urgency=medium
+
+  * Team upload.
+  * New upstream release
+    - Refreshed the patches
+  * Standards-Version updated to 4.5.0
+
+ -- Emmanuel Bourg <ebourg at apache.org>  Sun, 01 Mar 2020 20:58:16 +0100
+
 plexus-compiler (2.8.5-2) unstable; urgency=medium
 
   * Team upload.


=====================================
debian/control
=====================================
@@ -16,7 +16,7 @@ Build-Depends:
  libplexus-container-default-java,
  libplexus-utils2-java,
  maven-debian-helper (>= 1.5)
-Standards-Version: 4.4.0
+Standards-Version: 4.5.0
 Vcs-Git: https://salsa.debian.org/java-team/plexus-compiler.git
 Vcs-Browser: https://salsa.debian.org/java-team/plexus-compiler
 Homepage: https://codehaus-plexus.github.io/plexus-compiler/


=====================================
debian/maven.ignoreRules
=====================================
@@ -1,4 +1,5 @@
 
+org.apache.maven.plugins maven-enforcer-plugin * * * *
 org.apache.maven.plugins maven-gpg-plugin * * * *
 org.apache.maven.plugins maven-javadoc-plugin * * * *
 org.codehaus.mojo animal-sniffer-maven-plugin * * * *


=====================================
debian/patches/missing-dependency-management-entries.patch
=====================================
@@ -5,7 +5,7 @@ Author: Emmanuel Bourg <ebourg at apache.org>
 Forwarded: not-needed
 --- a/pom.xml
 +++ b/pom.xml
-@@ -64,6 +64,11 @@
+@@ -65,6 +65,11 @@
          <scope>test</scope>
          <version>4.12</version>
        </dependency>


=====================================
plexus-compiler-api/pom.xml
=====================================
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.codehaus.plexus</groupId>
     <artifactId>plexus-compiler</artifactId>
-    <version>2.8.5</version>
+    <version>2.8.6</version>
   </parent>
 
   <artifactId>plexus-compiler-api</artifactId>


=====================================
plexus-compiler-manager/pom.xml
=====================================
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.codehaus.plexus</groupId>
     <artifactId>plexus-compiler</artifactId>
-    <version>2.8.5</version>
+    <version>2.8.6</version>
   </parent>
 
   <artifactId>plexus-compiler-manager</artifactId>


=====================================
plexus-compiler-test/pom.xml
=====================================
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.codehaus.plexus</groupId>
     <artifactId>plexus-compiler</artifactId>
-    <version>2.8.5</version>
+    <version>2.8.6</version>
   </parent>
 
   <artifactId>plexus-compiler-test</artifactId>


=====================================
plexus-compiler-test/src/main/java/org/codehaus/plexus/compiler/AbstractCompilerTest.java
=====================================
@@ -115,9 +115,12 @@ public abstract class AbstractCompilerTest
 
         int numCompilerWarnings = messages.size() - numCompilerErrors;
 
-        if ( expectedErrors() != numCompilerErrors )
+        int expectedErrors = expectedErrors();
+
+        if ( expectedErrors != numCompilerErrors )
         {
             System.out.println( numCompilerErrors + " error(s) found:" );
+            List<String> errors = new ArrayList<>();
             for ( CompilerMessage error : messages )
             {
                 if ( !error.isError() )
@@ -129,13 +132,17 @@ public abstract class AbstractCompilerTest
                 System.out.println( error.getFile() );
                 System.out.println( error.getMessage() );
                 System.out.println( "----" );
+                errors.add( error.getMessage() );
             }
 
-            assertEquals( "Wrong number of compilation errors: " + messages, expectedErrors(), numCompilerErrors );
+            assertEquals( "Wrong number of compilation errors (" + numCompilerErrors + "/" + expectedErrors //
+                              + ") : " + errors, expectedErrors, numCompilerErrors );
         }
 
-        if ( expectedWarnings() != numCompilerWarnings )
+        int expectedWarnings = expectedWarnings();
+        if ( expectedWarnings != numCompilerWarnings )
         {
+            List<String> warnings = new ArrayList<>();
             System.out.println( numCompilerWarnings + " warning(s) found:" );
             for ( CompilerMessage error : messages )
             {
@@ -148,9 +155,11 @@ public abstract class AbstractCompilerTest
                 System.out.println( error.getFile() );
                 System.out.println( error.getMessage() );
                 System.out.println( "----" );
+                warnings.add( error.getMessage() );
             }
 
-            assertEquals( "Wrong number of compilation warnings.", expectedWarnings(), numCompilerWarnings );
+            assertEquals( "Wrong number (" + numCompilerWarnings + "/" + expectedWarnings + ") of compilation warnings: " + warnings, //
+                          expectedWarnings, numCompilerWarnings );
         }
 
         assertEquals( new TreeSet<>( normalizePaths( expectedOutputFiles() ) ), files );
@@ -224,7 +233,7 @@ public abstract class AbstractCompilerTest
 
     private List<String> normalizePaths( Collection<String> relativePaths )
     {
-        List<String> normalizedPaths = new ArrayList<String>();
+        List<String> normalizedPaths = new ArrayList<>();
         for ( String relativePath : relativePaths )
         {
             normalizedPaths.add( relativePath.replace( File.separatorChar, '/' ) );


=====================================
plexus-compilers/plexus-compiler-aspectj/pom.xml
=====================================
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.codehaus.plexus</groupId>
     <artifactId>plexus-compilers</artifactId>
-    <version>2.8.5</version>
+    <version>2.8.6</version>
   </parent>
 
   <artifactId>plexus-compiler-aspectj</artifactId>
@@ -14,7 +14,7 @@
   <description>AspectJ Compiler support for Plexus Compiler component.</description>
 
   <properties>
-    <aspectj.version>1.8.9</aspectj.version>
+    <aspectj.version>1.9.2</aspectj.version>
   </properties>
 
   <dependencies>


=====================================
plexus-compilers/plexus-compiler-aspectj/src/main/java/org/codehaus/plexus/compiler/ajc/AspectJCompiler.java
=====================================
@@ -28,117 +28,159 @@ import java.util.List;
 import java.util.Map;
 
 /**
- * <p/>
+ * <p>
  * Options
- * <p/>
+ * </p>
+ * <p>
  * -injars JarList
- * <p/>
+ * </p>
+ * <p>
  * Accept as source bytecode any .class files inside the specified .jar files. The output will include these
  * classes, possibly as woven with any applicable aspects. JarList, like classpath, is a single argument
  * containing a list of paths to jar files, delimited by the platform- specific classpath delimiter.
- * <p/>
+ * </p>
+ * <p>
  * -aspectpath JarList
- * <p/>
+ * </p>
+ * <p>
  * Weave binary aspects from JarList zip files into all sources. The aspects should have been output by
  * the same version of the compiler. To run the output classes requires putting all the aspectpath entries on
  * the run classpath. JarList, like classpath, is a single argument containing a list of paths to jar files,
  * delimited by the platform- specific classpath delimiter.
- * <p/>
+ * </p>
+ * <p>
  * -argfile File
- * <p/>
+ * </p>
+ * <p>
  * The file is a line-delimited list of arguments. These arguments are inserted into the argument list.
- * <p/>
+ * </p>
+ * <p>
  * -outjar output.jar
- * <p/>
+ * </p>
+ * <p>
  * Put output classes in zip file output.jar.
- * <p/>
+ * </p>
+ * <p>
  * -incremental
- * <p/>
+ * </p>
+ * <p>
  * Run the compiler continuously. After the initial compilation, the compiler will wait to recompile until it
  * reads a newline from the standard input, and will quit when it reads a 'q'. It will only recompile necessary
  * components, so a recompile should be much faster than doing a second compile. This requires -sourceroots.
- * <p/>
+ * </p>
+ * <p>
  * -sourceroots DirPaths
- * <p/>
+ * </p>
+ * <p>
  * Find and build all .java or .aj source files under any directory listed in DirPaths. DirPaths, like
  * classpath, is a single argument containing a list of paths to directories, delimited by the platform-
  * specific classpath delimiter. Required by -incremental.
- * <p/>
+ * </p>
+ * <p>
  * -emacssym
- * <p/>
+ * </p>
+ * <p>
  * Generate .ajesym symbol files for emacs support
- * <p/>
+ * </p>
+ * <p>
  * -Xlint
- * <p/>
+ * </p>
+ * <p>
  * Same as -Xlint:warning (enabled by default)
- * <p/>
+ * </p>
+ * <p>
  * -Xlint:{level}
- * <p/>
+ * </p>
+ * <p>
  * Set default level for messages about potential programming mistakes in crosscutting code. {level} may be
  * ignore, warning, or error. This overrides entries in org/aspectj/weaver/XlintDefault.properties from
  * aspectjtools.jar, but does not override levels set using the -Xlintfile option.
- * <p/>
+ * </p>
+ * <p>
  * -Xlintfile PropertyFile
- * <p/>
+ * </p>
+ * <p>
  * Specify properties file to set levels for specific crosscutting messages. PropertyFile is a path to a
  * Java .properties file that takes the same property names and values as
  * org/aspectj/weaver/XlintDefault.properties from aspectjtools.jar, which it also overrides.
  * -help
- * <p/>
+ * </p>
+ * <p>
  * Emit information on compiler options and usage
- * <p/>
+ * </p>
+ * <p>
  * -version
- * <p/>
+ * </p>
+ * <p>
  * Emit the version of the AspectJ compiler
- * <p/>
+ * </p>
+ * <p>
  * -classpath Path
- * <p/>
+ * </p>
+ * <p>
  * Specify where to find user class files. Path is a single argument containing a list of paths to zip files
  * or directories, delimited by the platform-specific path delimiter.
- * <p/>
+ * </p>
+ * <p>
  * -bootclasspath Path
- * <p/>
+ * </p>
+ * <p>
  * Override location of VM's bootclasspath for purposes of evaluating types when compiling. Path is a single
  * argument containing a list of paths to zip files or directories, delimited by the platform-specific path
  * delimiter.
- * <p/>
+ * </p>
+ * <p>
  * -extdirs Path
- * <p/>
+ * </p>
+ * <p>
  * Override location of VM's extension directories for purposes of evaluating types when compiling. Path is
  * a single argument containing a list of paths to directories, delimited by the platform-specific path
  * delimiter.
- * <p/>
+ * </p>
+ * <p>
  * -d Directory
- * <p/>
+ * </p>
+ * <p>
  * Specify where to place generated .class files. If not specified, Directory defaults to the current
  * working dir.
- * <p/>
+ * </p>
+ * <p>
  * -target [1.1|1.2]
- * <p/>
+ * </p>
+ * <p>
  * Specify classfile target setting (1.1 or 1.2, default is 1.1)
- * <p/>
+ * </p>
+ * <p>
  * -1.3
- * <p/>
+ * </p>
+ * <p>
  * Set compliance level to 1.3 (default)
  * -1.4
- * <p/>
+ * </p>
+ * <p>
  * Set compliance level to 1.4
  * -source [1.3|1.4]
- * <p/>
+ * </p>
+ * <p>
  * Toggle assertions (1.3 or 1.4, default is 1.3 in -1.3 mode and 1.4 in -1.4 mode). When using -source 1.3,
  * an assert() statement valid under Java 1.4 will result in a compiler error. When using -source 1.4, treat
  * assert as a keyword and implement assertions according to the 1.4 language spec.
- * <p/>
+ * </p>
+ * <p>
  * -nowarn
- * <p/>
+ * </p>
+ * <p>
  * Emit no warnings (equivalent to '-warn:none') This does not suppress messages generated by declare warning
  * or Xlint.
- * <p/>
+ * </p>
+ * <p>
  * -warn: items
- * <p/>
+ * </p>
+ * <p>
  * Emit warnings for any instances of the comma-delimited list of questionable code
  * (eg '-warn:unusedLocals,deprecation'):
- * <p/>
+ * </p>
+ * <p>
  * constructorName        method with constructor name
  * packageDefaultMethod   attempt to override package-default method
  * deprecation            usage of deprecated type or member
@@ -147,78 +189,96 @@ import java.util.Map;
  * unusedArguments        method argument never read
  * unusedImports          import statement not used by code in file
  * none                   suppress all compiler warnings
- * <p/>
- * <p/>
+ * </p>
+ * <p>
  * -warn:none does not suppress messages generated by declare warning or Xlint.
- * <p/>
+ * </p>
+ * <p>
  * -deprecation
- * <p/>
+ * </p>
+ * <p>
  * Same as -warn:deprecation
- * <p/>
+ * </p>
+ * <p>
  * -noImportError
- * <p/>
+ * </p>
+ * <p>
  * Emit no errors for unresolved imports
- * <p/>
+ * </p>
+ * <p>
  * -proceedOnError
- * <p/>
+ * </p>
+ * <p>
  * Keep compiling after error, dumping class files with problem methods
- * <p/>
+ * </p>
+ * <p>
  * -g:[lines,vars,source]
- * <p/>
+ * </p>
+ * <p>
  * debug attributes level, that may take three forms:
- * <p/>
+ * </p>
+ * <p>
  * -g         all debug info ('-g:lines,vars,source')
  * -g:none    no debug info
  * -g:{items} debug info for any/all of [lines, vars, source], e.g.,
  * -g:lines,source
- * <p/>
- * <p/>
+ * </p>
+ * <p>
  * -preserveAllLocals
- * <p/>
+ * </p>
+ * <p>
  * Preserve all local variables during code generation (to facilitate debugging).
- * <p/>
+ * </p>
+ * <p>
  * -referenceInfo
- * <p/>
+ * </p>
+ * <p>
  * Compute reference information.
- * <p/>
+ * </p>
+ * <p>
  * -encoding format
- * <p/>
+ * </p>
+ * <p>
  * Specify default source encoding format. Specify custom encoding on a per file basis by suffixing each
  * input source file/folder name with '[encoding]'.
- * <p/>
+ * </p>
+ * <p>
  * -verbose
- * <p/>
+ * </p>
+ * <p>
  * Emit messages about accessed/processed compilation units
- * <p/>
- * -log file
- * <p/>
- * Specify a log file for compiler messages.
- * -progress
- * <p/>
- * Show progress (requires -log mode).
- * -time
- * <p/>
- * Display speed information.
- * -noExit
- * <p/>
- * Do not call System.exit(n) at end of compilation (n=0 if no error)
- * -repeat N
- * <p/>
- * Repeat compilation process N times (typically to do performance analysis).
- * -Xnoweave
- * <p/>
- * (Experimental) produce unwoven class files for input using -injars.
- * -Xnoinline
- * <p/>
- * (Experimental) do not inline around advice
+ * </p>
+ * <p>
+ * -log file Specify a log file for compiler messages.
+ * </p>
+ * <p>
+ * -progress Show progress (requires -log mode).
+ * </p>
+ * <p>
+ * -time Display speed information.
+ * </p>
+ * <p>
+ * -noExit Do not call System.exit(n) at end of compilation (n=0 if no error)
+ * </p>
+ * <p>
+ * -repeat N Repeat compilation process N times (typically to do performance analysis).
+ * </p>
+ * <p>
+ * -Xnoweave (Experimental) produce unwoven class files for input using -injars.
+ * </p>
+ * <p>
+ * -Xnoinline (Experimental) do not inline around advice
+ * </p>
+ * <p>
  * -XincrementalFile file
- * <p/>
+ * </p>
+ * <p>
  * (Experimental) This works like incremental mode, but using a file rather than standard input to control
  * the compiler. It will recompile each time file is changed and and halt when file is deleted.
- * <p/>
- * -XserializableAspects
- * <p/>
- * (Experimental) Normally it is an error to declare aspects Serializable. This option removes that restriction.
+ * </p>
+ * <p>
+ * -XserializableAspects (Experimental) Normally it is an error to declare aspects Serializable. This option removes that restriction.
+ * </p>
  *
  * @author <a href="mailto:jason at maven.org">Jason van Zyl</a>
  * @plexus.component role="org.codehaus.plexus.compiler.Compiler" role-hint="aspectj"
@@ -503,9 +563,21 @@ public class AspectJCompiler
     private void setSourceVersion( AjBuildConfig buildConfig, String sourceVersion )
         throws CompilerException
     {
-        if ( "1.9".equals( sourceVersion ) )
+        if ( "11".equals( sourceVersion ) )
         {
-            buildConfig.getOptions().sourceLevel = ClassFileConstants.JDK1_9;
+            buildConfig.getOptions().sourceLevel = ClassFileConstants.JDK11;
+        }
+        else if ( "10".equals( sourceVersion ) )
+        {
+            buildConfig.getOptions().sourceLevel = ClassFileConstants.JDK10;
+        }
+        else if ( "9".equals( sourceVersion ) )
+        {
+            buildConfig.getOptions().sourceLevel = ClassFileConstants.JDK9;
+        }
+        else if ( "1.9".equals( sourceVersion ) )
+        {
+            buildConfig.getOptions().sourceLevel = ClassFileConstants.JDK9;
         }
         else if ( "1.8".equals( sourceVersion ) )
         {


=====================================
plexus-compilers/plexus-compiler-aspectj/src/test/java/org/codehaus/plexus/compiler/ajc/AspectJCompilerTest.java
=====================================
@@ -28,7 +28,8 @@ public class AspectJCompilerTest
     {
         // olamy well I agree it's hackhish but I don't want to waste too much time with aspectj which is probably
         // not used a lot anymore...
-        if (getJavaVersion().startsWith( "9" ) || getJavaVersion().startsWith( "10" ))
+        String javaVersion = getJavaVersion();
+        if (javaVersion.equals( "11" ))
         {
             return 11;
         }
@@ -40,10 +41,10 @@ public class AspectJCompilerTest
         String javaVersion = System.getProperty( "java.version" );
         // olamy well I agree it's hackhish but I don't want to waste too much time with aspectj which is probably
         // not used a lot anymore...
-        if (javaVersion.startsWith( "9" ) || javaVersion.startsWith( "10" ))
-        {
-            return Collections.emptyList();
-        }
+//        if (javaVersion.startsWith( "9" ) || javaVersion.startsWith( "10" ))
+//        {
+//            return Collections.emptyList();
+//        }
         return Arrays.asList( new String[]{ "org/codehaus/foo/ExternalDeps.class", "org/codehaus/foo/Person.class" } );
     }
 


=====================================
plexus-compilers/plexus-compiler-csharp/pom.xml
=====================================
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.codehaus.plexus</groupId>
     <artifactId>plexus-compilers</artifactId>
-    <version>2.8.5</version>
+    <version>2.8.6</version>
   </parent>
 
   <artifactId>plexus-compiler-csharp</artifactId>


=====================================
plexus-compilers/plexus-compiler-csharp/src/main/java/org/codehaus/plexus/compiler/csharp/DefaultCSharpCompilerParser.java
=====================================
@@ -5,11 +5,12 @@ import org.codehaus.plexus.util.StringUtils;
 
 /**
  * Handles output from both mono with only the line number
- * <p/>
+ * <p>
  * ex error = "/home/trygvis/dev/com.myrealbox/trunk/mcs/nunit20/core/./TestRunnerThread.cs(29) error CS0246: Cannot find type 'NameValueCollection'"
- * <p/>
- * and errors from mono & csc on windows which has column num also
- * <p/>
+ * </p>
+ * <p>
+ * and errors from mono & csc on windows which has column num also
+ * </p>
  * ex error = "src\\test\\csharp\\Hierarchy\\Logger.cs(98,4): warning CS0618: 'NUnit.Framework.Assertion' is obsolete: 'Use Assert class instead'";
  *
  * @author <a href="mailto:gdodinet at karmicsoft.com">Gilles Dodinet</a>


=====================================
plexus-compilers/plexus-compiler-eclipse/pom.xml
=====================================
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.codehaus.plexus</groupId>
     <artifactId>plexus-compilers</artifactId>
-    <version>2.8.5</version>
+    <version>2.8.6</version>
   </parent>
 
   <artifactId>plexus-compiler-eclipse</artifactId>
@@ -21,7 +21,7 @@
     <dependency>
       <groupId>org.eclipse.jdt</groupId>
       <artifactId>ecj</artifactId>
-      <version>3.13.100</version>
+      <version>3.15.1</version>
     </dependency>
   </dependencies>
 


=====================================
plexus-compilers/plexus-compiler-eclipse/src/main/java/org/codehaus/plexus/compiler/eclipse/EclipseJavaCompiler.java
=====================================
@@ -30,21 +30,30 @@ import org.codehaus.plexus.compiler.CompilerException;
 import org.codehaus.plexus.compiler.CompilerMessage;
 import org.codehaus.plexus.compiler.CompilerOutputStyle;
 import org.codehaus.plexus.compiler.CompilerResult;
+import org.codehaus.plexus.util.DirectoryScanner;
 import org.codehaus.plexus.util.StringUtils;
 import org.eclipse.jdt.core.compiler.CompilationProgress;
 import org.eclipse.jdt.core.compiler.batch.BatchCompiler;
 
 import java.io.File;
-import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.nio.charset.Charset;
 import java.util.ArrayList;
-import java.util.Collections;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.ServiceLoader;
 import java.util.Set;
 
+import javax.tools.Diagnostic;
+import javax.tools.DiagnosticListener;
+import javax.tools.JavaCompiler;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+
 /**
  * @plexus.component role="org.codehaus.plexus.compiler.Compiler" role-hint="eclipse"
  */
@@ -61,6 +70,7 @@ public class EclipseJavaCompiler
     // ----------------------------------------------------------------------
     boolean errorsAsWarnings = false;
 
+    @Override
     public CompilerResult performCompile(CompilerConfiguration config )
         throws CompilerException
     {
@@ -240,97 +250,166 @@ public class EclipseJavaCompiler
         args.add("-classpath");
         args.add(getPathString(classpathEntries));
 
-        // Compile! Send all errors to xml temp file.
-        File errorF = null;
-        try
+        // Collect sources
+        List<String> allSources = new ArrayList<>();
+        for (String source : config.getSourceLocations())
         {
-            errorF = File.createTempFile("ecjerr-", ".xml");
-
-            args.add("-log");
-            args.add(errorF.toString());
-
-            // Add all sources.
-            int argCount = args.size();
-            for(String source : config.getSourceLocations())
+            File srcFile = new File(source);
+            if (srcFile.exists())
             {
-                File srcFile = new File(source);
-                if(srcFile.exists())
-                {
-                    Set<String> ss = getSourceFilesForSourceRoot(config, source);
-                    args.addAll(ss);
-                }
+                Set<String> ss = getSourceFilesForSourceRoot(config, source);
+                allSources.addAll(ss);
             }
-            args.addAll(extraSourceDirs);
-            if(args.size() == argCount)
-            {
-                //-- Nothing to do -> bail out
-                return new CompilerResult(true, Collections.EMPTY_LIST);
+        }
+        for (String extraSrcDir : extraSourceDirs) {
+            File extraDir = new File(extraSrcDir);
+            if (extraDir.isDirectory()) {
+                addExtraSources(extraDir, allSources);
             }
+        }
+        List<CompilerMessage> messageList = new ArrayList<>();
+        if (allSources.isEmpty()) {
+            // -- Nothing to do -> bail out
+            return new CompilerResult(true, messageList);
+        }
 
-            getLogger().debug("ecj command line: " + args);
-
+        // Compile
+        try {
             StringWriter sw = new StringWriter();
             PrintWriter devNull = new PrintWriter(sw);
-
-            //BatchCompiler.compile(args.toArray(new String[args.size()]), new PrintWriter(System.err), new PrintWriter(System.out), new CompilationProgress() {
-            boolean success = BatchCompiler.compile(args.toArray(new String[args.size()]), devNull, devNull, new CompilationProgress() {
-                @Override
-                public void begin(int i)
-                {
+            JavaCompiler compiler = getEcj();
+            boolean success = false;
+            if (compiler != null) {
+                getLogger().debug("Using JSR-199 EclipseCompiler");
+                // ECJ JSR-199 compiles against the latest Java version it supports if no source
+                // version is given explicitly. BatchCompiler uses 1.3 as default. So check
+                // whether a source version is specified, and if not supply 1.3 explicitly.
+                String srcVersion = null;
+                Iterator<String> allArgs = args.iterator();
+                while (allArgs.hasNext()) {
+                    String option = allArgs.next();
+                    if ("-source".equals(option) && allArgs.hasNext()) {
+                        srcVersion = allArgs.next();
+                        break;
+                    }
                 }
-
-                @Override
-                public void done()
-                {
+                if (srcVersion == null) {
+                    getLogger().debug("ecj: no source level specified, defaulting to Java 1.3");
+                    args.add("-source");
+                    args.add("1.3");
                 }
+                final Locale defaultLocale = Locale.getDefault();
+                final List<CompilerMessage> messages = messageList;
+                DiagnosticListener<? super JavaFileObject> messageCollector = new DiagnosticListener<JavaFileObject>() {
+
+                    @Override
+                    public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
+                        // Convert to Plexus' CompilerMessage and append to messageList
+                        String fileName = "Unknown source";
+                        try {
+                            JavaFileObject file = diagnostic.getSource();
+                            if (file != null) {
+                                fileName = file.getName();
+                            }
+                        } catch (NullPointerException e) {
+                            // ECJ bug: diagnostic.getSource() may throw an NPE if there is no source
+                        }
+                        long startColumn = diagnostic.getColumnNumber();
+                        // endColumn may be wrong if the endPosition is not on the same line.
+                        long endColumn = startColumn + (diagnostic.getEndPosition() - diagnostic.getStartPosition());
+                        CompilerMessage message = new CompilerMessage(fileName,
+                                convert(diagnostic.getKind()), (int) diagnostic.getLineNumber(), (int) startColumn,
+                                (int) diagnostic.getLineNumber(), (int) endColumn,
+                                diagnostic.getMessage(defaultLocale));
+                        messages.add(message);
+                    }
+                };
+                StandardJavaFileManager manager = compiler.getStandardFileManager(messageCollector, defaultLocale,
+                        Charset.defaultCharset());
 
-                @Override
-                public boolean isCanceled()
-                {
-                    return false;
-                }
+                getLogger().debug("ecj command line: " + args);
+                getLogger().debug("ecj input source files: " + allSources);
 
-                @Override
-                public void setTaskName(String s)
-                {
+                Iterable<? extends JavaFileObject> units = manager.getJavaFileObjectsFromStrings(allSources);
+                try {
+                    success = Boolean.TRUE
+                            .equals(compiler.getTask(devNull, manager, messageCollector, args, null, units).call());
+                } catch (RuntimeException e) {
+                    throw new EcjFailureException(e.getLocalizedMessage());
                 }
-
-                @Override
-                public void worked(int i, int i1)
-                {
+                getLogger().debug(sw.toString());
+            } else {
+                // Use the BatchCompiler and send all errors to xml temp file.
+                File errorF = null;
+                try {
+                    errorF = File.createTempFile("ecjerr-", ".xml");
+                    getLogger().debug("Using legacy BatchCompiler; error file " + errorF);
+
+                    args.add("-log");
+                    args.add(errorF.toString());
+                    args.addAll(allSources);
+
+                    getLogger().debug("ecj command line: " + args);
+
+                    success = BatchCompiler.compile(args.toArray(new String[args.size()]), devNull, devNull,
+                            new CompilationProgress() {
+                                @Override
+                                public void begin(int i) {
+                                }
+
+                                @Override
+                                public void done() {
+                                }
+
+                                @Override
+                                public boolean isCanceled() {
+                                    return false;
+                                }
+
+                                @Override
+                                public void setTaskName(String s) {
+                                }
+
+                                @Override
+                                public void worked(int i, int i1) {
+                                }
+                            });
+                    getLogger().debug(sw.toString());
+
+                    if (errorF.length() < 80) {
+                        throw new EcjFailureException(sw.toString());
+                    }
+                    messageList = new EcjResponseParser().parse(errorF, errorsAsWarnings);
+                } finally {
+                    if (null != errorF) {
+                        try {
+                            errorF.delete();
+                        } catch (Exception x) {
+                        }
+                    }
                 }
-            });
-            getLogger().debug(sw.toString());
-
-            List<CompilerMessage> messageList;
-            boolean hasError = false;
-            if(errorF.length() < 80)
-            {
-                throw new EcjFailureException(sw.toString());
             }
-            messageList = new EcjResponseParser().parse(errorF, errorsAsWarnings);
-
-            for(CompilerMessage compilerMessage : messageList)
-            {
-                if(compilerMessage.isError())
-                {
+            boolean hasError = false;
+            for (CompilerMessage compilerMessage : messageList) {
+                if (compilerMessage.isError()) {
                     hasError = true;
                     break;
                 }
             }
-            if(!hasError && !success && !errorsAsWarnings)
-            {
-                CompilerMessage.Kind kind = errorsAsWarnings ? CompilerMessage.Kind.WARNING : CompilerMessage.Kind.ERROR;
-
-                //-- Compiler reported failure but we do not seem to have one -> probable exception
-                CompilerMessage cm = new CompilerMessage("[ecj] The compiler reported an error but has not written it to its logging", kind);
+            if (!hasError && !success && !errorsAsWarnings) {
+                CompilerMessage.Kind kind = errorsAsWarnings ? CompilerMessage.Kind.WARNING
+                        : CompilerMessage.Kind.ERROR;
+
+                // -- Compiler reported failure but we do not seem to have one -> probable
+                // exception
+                CompilerMessage cm = new CompilerMessage(
+                        "[ecj] The compiler reported an error but has not written it to its logging", kind);
                 messageList.add(cm);
                 hasError = true;
 
-                //-- Try to find the actual message by reporting the last 5 lines as a message
+                // -- Try to find the actual message by reporting the last 5 lines as a message
                 String stdout = getLastLines(sw.toString(), 5);
-                if(stdout.length() > 0)
-                {
+                if (stdout.length() > 0) {
                     cm = new CompilerMessage("[ecj] The following line(s) might indicate the issue:\n" + stdout, kind);
                     messageList.add(cm);
                 }
@@ -339,14 +418,58 @@ public class EclipseJavaCompiler
         } catch(EcjFailureException x) {
             throw x;
         } catch(Exception x) {
-            throw new RuntimeException(x);				// sigh
-        } finally {
-            if(null != errorF) {
-                try {
-                    errorF.delete();
-                } catch(Exception x) {}
+            throw new RuntimeException(x); // sigh
+        }
+    }
+
+    private JavaCompiler getEcj() {
+        ServiceLoader<JavaCompiler> javaCompilerLoader = ServiceLoader.load(JavaCompiler.class,
+                BatchCompiler.class.getClassLoader());
+        Class<?> c = null;
+        try {
+            c = Class.forName("org.eclipse.jdt.internal.compiler.tool.EclipseCompiler", false,
+                    BatchCompiler.class.getClassLoader());
+        } catch (ClassNotFoundException e) {
+            // Ignore
+        }
+        if (c != null) {
+            for (JavaCompiler javaCompiler : javaCompilerLoader) {
+                if (c.isInstance(javaCompiler)) {
+                    return javaCompiler;
+                }
             }
         }
+        getLogger().debug("Cannot find org.eclipse.jdt.internal.compiler.tool.EclipseCompiler");
+        return null;
+    }
+
+    private void addExtraSources(File dir, List<String> allSources) {
+        DirectoryScanner scanner = new DirectoryScanner();
+        scanner.setBasedir(dir.getAbsolutePath());
+        scanner.setIncludes(new String[] { "**/*.java" });
+        scanner.scan();
+        for (String file : scanner.getIncludedFiles()) {
+            allSources.add(new File(dir, file).getAbsolutePath());
+        }
+    }
+
+    private CompilerMessage.Kind convert(Diagnostic.Kind kind) {
+        if (kind == null) {
+            return CompilerMessage.Kind.OTHER;
+        }
+        switch (kind) {
+        case ERROR:
+            return errorsAsWarnings ? CompilerMessage.Kind.WARNING : CompilerMessage.Kind.ERROR;
+        case WARNING:
+            return CompilerMessage.Kind.WARNING;
+        case MANDATORY_WARNING:
+            return CompilerMessage.Kind.MANDATORY_WARNING;
+        case NOTE:
+            return CompilerMessage.Kind.NOTE;
+        case OTHER:
+        default:
+            return CompilerMessage.Kind.OTHER;
+        }
     }
 
     private String getLastLines(String text, int lines)
@@ -396,6 +519,7 @@ public class EclipseJavaCompiler
             || s.startsWith( "1.1" ) || s.startsWith( "1.0" );
     }
 
+    @Override
     public String[] createCommandLine( CompilerConfiguration config )
         throws CompilerException
     {


=====================================
plexus-compilers/plexus-compiler-j2objc/pom.xml
=====================================
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.codehaus.plexus</groupId>
     <artifactId>plexus-compilers</artifactId>
-    <version>2.8.5</version>
+    <version>2.8.6</version>
   </parent>
 
   <artifactId>plexus-compiler-j2objc</artifactId>


=====================================
plexus-compilers/plexus-compiler-javac-errorprone/pom.xml
=====================================
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.codehaus.plexus</groupId>
     <artifactId>plexus-compilers</artifactId>
-    <version>2.8.5</version>
+    <version>2.8.6</version>
   </parent>
 
   <artifactId>plexus-compiler-javac-errorprone</artifactId>
@@ -29,7 +29,7 @@
     <dependency>
       <groupId>com.google.errorprone</groupId>
       <artifactId>error_prone_core</artifactId>
-      <version>2.2.0</version>
+      <version>2.3.2</version>
     </dependency>
   </dependencies>
 


=====================================
plexus-compilers/plexus-compiler-javac/pom.xml
=====================================
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.codehaus.plexus</groupId>
     <artifactId>plexus-compilers</artifactId>
-    <version>2.8.5</version>
+    <version>2.8.6</version>
   </parent>
   
   <artifactId>plexus-compiler-javac</artifactId>


=====================================
plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java
=====================================
@@ -679,9 +679,22 @@ public class JavacCompiler
             {
                 // javac output not detected by other parsing
                 // maybe better to ignore only the summary an mark the rest as error
-                if (buffer.length() > 0 && buffer.toString().startsWith("javac:"))
+                String bufferAsString = buffer.toString();
+                if ( buffer.length() > 0 )
                 {
-                    errors.add( new CompilerMessage( buffer.toString(), CompilerMessage.Kind.ERROR ) );
+                    if ( bufferAsString.startsWith("javac:"))
+                    {
+                        errors.add( new CompilerMessage( bufferAsString, CompilerMessage.Kind.ERROR ) );
+                    }
+                    else if ( bufferAsString.startsWith("Error occurred during initialization of boot layer"))
+                    {
+                        errors.add( new CompilerMessage( bufferAsString, CompilerMessage.Kind.OTHER ) );
+                    }
+                    else if ( hasPointer )
+                    {
+                        //A compiler message remains in buffer at end of parse stream
+                        errors.add( parseModernError( exitCode, bufferAsString ) );
+                    }
                 }
                 return errors;
             }


=====================================
plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/AbstractJavacCompilerTest.java
=====================================
@@ -60,14 +60,14 @@ public abstract class AbstractJavacCompilerTest
 
     protected int expectedErrors()
     {
-
-        if (getJavaVersion().contains("9.0")){
+        String javaVersion = getJavaVersion();
+        if (javaVersion.contains("9.0")||javaVersion.contains("11")){
             // lots of new warnings about obsoletions for future releases
             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( getJavaVersion() ) < 0 )
+        if ( "1.5".compareTo( javaVersion ) < 0 )
         {
             return 4;
         }
@@ -79,18 +79,21 @@ public abstract class AbstractJavacCompilerTest
 
     protected int expectedWarnings()
     {
-        if (getJavaVersion().contains("9.0")){
+        String javaVersion = getJavaVersion();
+        if (javaVersion.contains("11")){
+            return 1;
+        }
+        if (javaVersion.contains("9.0")){
             // lots of new warnings about obsoletions for future releases
             return 8;
         }
 
-
-        if (getJavaVersion().contains("1.8")){
+        if (javaVersion.contains("1.8")){
             // lots of new warnings about obsoletions for future releases
             return 30;
         }
 
-        if ( "1.6".compareTo( getJavaVersion() ) < 0 )
+        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;
@@ -102,24 +105,33 @@ public abstract class AbstractJavacCompilerTest
     @Override
     public String getTargetVersion()
     {
-        if (getJavaVersion().contains("9.0")){
+        String javaVersion = getJavaVersion();
+        if (javaVersion.contains("9.0")){
             return "1.7";
         }
+        if (javaVersion.contains("11")){
+            return "11";
+        }
         return super.getTargetVersion();
     }
 
     @Override
     public String getSourceVersion()
     {
-        if (getJavaVersion().contains("9.0")){
+        String javaVersion = getJavaVersion();
+        if (javaVersion.contains("9.0")){
             return "1.7";
         }
+        if (javaVersion.contains("11")){
+            return "11";
+        }
         return super.getTargetVersion();
     }
 
     protected Collection<String> expectedOutputFiles()
     {
-        if (getJavaVersion().contains("9.0")){
+        String javaVersion = getJavaVersion();
+        if (javaVersion.contains("9.0")||javaVersion.contains("11")){
             return Arrays.asList( new String[]{ "org/codehaus/foo/Deprecation.class", "org/codehaus/foo/ExternalDeps.class",
                 "org/codehaus/foo/Person.class"} );
         }
@@ -142,7 +154,7 @@ public abstract class AbstractJavacCompilerTest
 
     public void testBuildCompilerArgs13()
     {
-        List<String> expectedArguments = new ArrayList<String>();
+        List<String> expectedArguments = new ArrayList<>();
 
         CompilerConfiguration compilerConfiguration = new CompilerConfiguration();
 
@@ -155,7 +167,7 @@ public abstract class AbstractJavacCompilerTest
 
     public void testBuildCompilerArgs14()
     {
-        List<String> expectedArguments = new ArrayList<String>();
+        List<String> expectedArguments = new ArrayList<>();
 
         CompilerConfiguration compilerConfiguration = new CompilerConfiguration();
 
@@ -168,7 +180,7 @@ public abstract class AbstractJavacCompilerTest
 
     public void testBuildCompilerArgs15()
     {
-        List<String> expectedArguments = new ArrayList<String>();
+        List<String> expectedArguments = new ArrayList<>();
 
         CompilerConfiguration compilerConfiguration = new CompilerConfiguration();
 
@@ -181,7 +193,7 @@ public abstract class AbstractJavacCompilerTest
 
     public void testBuildCompilerArgs18()
     {
-        List<String> expectedArguments = new ArrayList<String>();
+        List<String> expectedArguments = new ArrayList<>();
 
         CompilerConfiguration compilerConfiguration = new CompilerConfiguration();
 
@@ -194,7 +206,7 @@ public abstract class AbstractJavacCompilerTest
 
     public void testBuildCompilerArgsUnspecifiedVersion()
     {
-        List<String> expectedArguments = new ArrayList<String>();
+        List<String> expectedArguments = new ArrayList<>();
 
         CompilerConfiguration compilerConfiguration = new CompilerConfiguration();
 
@@ -205,7 +217,7 @@ public abstract class AbstractJavacCompilerTest
 
     public void testBuildCompilerDebugLevel()
     {
-        List<String> expectedArguments = new ArrayList<String>();
+        List<String> expectedArguments = new ArrayList<>();
 
         CompilerConfiguration compilerConfiguration = new CompilerConfiguration();
 
@@ -221,7 +233,7 @@ public abstract class AbstractJavacCompilerTest
     // PLXCOMP-190
     public void testJRuntimeArguments()
     {
-        List<String> expectedArguments = new ArrayList<String>();
+        List<String> expectedArguments = new ArrayList<>();
 
         CompilerConfiguration compilerConfiguration = new CompilerConfiguration();
 
@@ -251,7 +263,7 @@ public abstract class AbstractJavacCompilerTest
 
     public void testModulePath() throws Exception
     {
-        List<String> expectedArguments = new ArrayList<String>();
+        List<String> expectedArguments = new ArrayList<>();
 
         CompilerConfiguration compilerConfiguration = new CompilerConfiguration();
 
@@ -278,7 +290,7 @@ public abstract class AbstractJavacCompilerTest
 
     public void testModuleVersion()
     {
-        List<String> expectedArguments = new ArrayList<String>();
+        List<String> expectedArguments = new ArrayList<>();
 
         CompilerConfiguration compilerConfiguration = new CompilerConfiguration();
 
@@ -303,7 +315,7 @@ public abstract class AbstractJavacCompilerTest
 
     public void testReleaseVersion()
     {
-        List<String> expectedArguments = new ArrayList<String>();
+        List<String> expectedArguments = new ArrayList<>();
 
         CompilerConfiguration compilerConfiguration = new CompilerConfiguration();
 
@@ -322,7 +334,7 @@ public abstract class AbstractJavacCompilerTest
 
     public void testFailOnWarning()
     {
-        List<String> expectedArguments = new ArrayList<String>();
+        List<String> expectedArguments = new ArrayList<>();
 
         CompilerConfiguration compilerConfiguration = new CompilerConfiguration();
 
@@ -346,7 +358,7 @@ public abstract class AbstractJavacCompilerTest
 
     public void testMultipleAddExports()
     {
-        List<String> expectedArguments = new ArrayList<String>();
+        List<String> expectedArguments = new ArrayList<>();
 
         CompilerConfiguration compilerConfiguration = new CompilerConfiguration();
 


=====================================
plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/ErrorMessageParserTest.java
=====================================
@@ -894,6 +894,71 @@ public class ErrorMessageParserTest
               ".tools.javac.Main.main(Main.java:43)" + EOL));
     }
 
+    public void testJvmError() throws Exception
+    {
+        String out = "Error occurred during initialization of boot layer" + EOL +
+        		"java.lang.module.FindException: Module java.xml.bind not found";
+
+        List<CompilerMessage> compilerErrors = JavacCompiler.parseModernStream( 1, new BufferedReader( new StringReader( out ) ));
+
+        assertNotNull( compilerErrors );
+
+        assertEquals( 1, compilerErrors.size() );
+    }
+
+    public void testBadSourceFileError() throws Exception
+    {
+        String out = "/MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls1.java:12: error: cannot access Cls2\n" +
+                "    Cls2 tvar;\n" +
+                "    ^\n" +
+                "  bad source file: /MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls2.java\n" +
+                "    file does not contain class ch.pecunifex.x.Cls2\n" +
+                "    Please remove or make sure it appears in the correct subdirectory of the sourcepath.";
+
+        List<CompilerMessage> compilerErrors = JavacCompiler.parseModernStream( 1, new BufferedReader( new StringReader( out ) ));
+
+        assertNotNull( compilerErrors );
+
+        assertEquals( 1, compilerErrors.size() );
+
+        final CompilerMessage message = compilerErrors.get( 0 );
+        validateBadSourceFile(message);
+    }
+
+    public void testWarningFollowedByBadSourceFileError() throws Exception
+    {
+        String out = "/MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls1.java:3: warning: FontDesignMetrics is internal proprietary API and may be removed in a future release\n" +
+                "import sun.font.FontDesignMetrics;\n" +
+                "               ^\n" +
+                "/MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls1.java:12: error: cannot access Cls2\n" +
+                "    Cls2 tvar;\n" +
+                "    ^\n" +
+                "  bad source file: /MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls2.java\n" +
+                "    file does not contain class ch.pecunifex.x.Cls2\n" +
+                "    Please remove or make sure it appears in the correct subdirectory of the sourcepath.";
+
+        List<CompilerMessage> compilerErrors = JavacCompiler.parseModernStream( 1, new BufferedReader( new StringReader( out ) ));
+
+        assertNotNull( compilerErrors );
+
+        assertEquals( 2, compilerErrors.size() );
+
+        final CompilerMessage firstMessage = compilerErrors.get( 0 );
+        assertEquals( "Is a Warning", CompilerMessage.Kind.WARNING, firstMessage.getKind() );
+        assertEquals( "On Correct File","/MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls1.java", firstMessage.getFile() );
+        assertEquals( "Internal API Warning", "FontDesignMetrics is internal proprietary API and may be removed in a future release", firstMessage.getMessage() );
+
+        final CompilerMessage secondMessage = compilerErrors.get( 1 );
+        validateBadSourceFile(secondMessage);
+    }
+
+    private void validateBadSourceFile(CompilerMessage message)
+    {
+        assertEquals( "Is an Error", CompilerMessage.Kind.ERROR, message.getKind() );
+        assertEquals( "On Correct File","/MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls1.java", message.getFile() );
+        assertTrue( "Message starts with access Error", message.getMessage().startsWith("error: cannot access Cls2") );
+    }
+
     private static void assertEquivalent(CompilerMessage expected, CompilerMessage actual){
         assertEquals("Message did not match", expected.getMessage(), actual.getMessage());
         assertEquals("Kind did not match", expected.getKind(), actual.getKind());


=====================================
plexus-compilers/plexus-compiler-jikes/pom.xml
=====================================
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.codehaus.plexus</groupId>
     <artifactId>plexus-compilers</artifactId>
-    <version>2.8.5</version>
+    <version>2.8.6</version>
   </parent>
 
   <artifactId>plexus-compiler-jikes</artifactId>


=====================================
plexus-compilers/pom.xml
=====================================
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.codehaus.plexus</groupId>
     <artifactId>plexus-compiler</artifactId>
-    <version>2.8.5</version>
+    <version>2.8.6</version>
   </parent>
 
   <artifactId>plexus-compilers</artifactId>


=====================================
pom.xml
=====================================
@@ -6,11 +6,11 @@
   <parent>
     <groupId>org.codehaus.plexus</groupId>
     <artifactId>plexus-components</artifactId>
-    <version>4.0</version>
+    <version>6.1</version>
   </parent>
 
   <artifactId>plexus-compiler</artifactId>
-  <version>2.8.5</version>
+  <version>2.8.6</version>
   <packaging>pom</packaging>
 
   <name>Plexus Compiler</name>
@@ -27,7 +27,7 @@
     <connection>${scm.url}</connection>
     <developerConnection>${scm.url}</developerConnection>
     <url>http://github.com/codehaus-plexus/plexus-compiler/tree/${project.scm.tag}/</url>
-    <tag>plexus-compiler-2.8.5</tag>
+    <tag>plexus-compiler-2.8.6</tag>
   </scm>
   <issueManagement>
     <system>github</system>
@@ -44,6 +44,7 @@
     <scm.url>scm:git:git at github.com:codehaus-plexus/plexus-compiler.git</scm.url>
     <javaVersion>7</javaVersion>
     <redirectTestOutputToFile>true</redirectTestOutputToFile>
+    <project.build.outputTimestamp>2020-02-16T01:15:35Z</project.build.outputTimestamp>
   </properties>
 
   <dependencyManagement>
@@ -85,7 +86,7 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-surefire-plugin</artifactId>
-          <version>2.20</version>
+          <version>2.22.1</version>
           <configuration>
             <redirectTestOutputToFile>${redirectTestOutputToFile}</redirectTestOutputToFile>
           </configuration>
@@ -103,6 +104,13 @@
           <artifactId>maven-javadoc-plugin</artifactId>
           <configuration>
             <additionalparam>-Xdoclint:none</additionalparam>
+            <tagletArtifacts>
+              <tagletArtifact combine.id="org.codehaus.plexus:plexus-javadoc">
+                <groupId>org.codehaus.plexus</groupId>
+                <artifactId>plexus-javadoc</artifactId>
+                <version>1.0</version>
+              </tagletArtifact>
+            </tagletArtifacts>
           </configuration>
         </plugin>
       </plugins>
@@ -148,6 +156,29 @@
           </execution>
         </executions>
       </plugin>
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>3.0.0-M2</version>
+        <executions>
+          <execution>
+            <id>enforce-java</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requireJavaVersion>
+                  <version>[1.8,)</version>
+                  <message>[ERROR] OLD JDK [${java.version}] in use. This projects requires JDK 8 or newer</message>
+                </requireJavaVersion>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
     </plugins>
   </build>
 


=====================================
src/site/apt/index.apt
=====================================
@@ -46,7 +46,7 @@ Plexus Compiler
 
     * {{{./plexus-compilers/plexus-compiler-javac/}<<<plexus-compiler-javac>>>}}: javac compiler,
 
-    * {{{./plexus-compilers/plexus-compiler-javac-errorprone/}<<<plexus-compiler-javac-errorprone>>>}}: javac compiler with {{{http://error-prone.googlecode.com}error-prone}} static analysis checks enabled ,
+    * {{{./plexus-compilers/plexus-compiler-javac-errorprone/}<<<plexus-compiler-javac-errorprone>>>}}: javac compiler with {{{https://errorprone.info}error-prone}} static analysis checks enabled,
 
     * {{{./plexus-compilers/plexus-compiler-jikes/}<<<plexus-compiler-jikes>>>}}: jikes compiler,
 



View it on GitLab: https://salsa.debian.org/java-team/plexus-compiler/-/compare/e600c0b883d3c58c8504e7dc4297d01109425d1e...0c3534256e343dac13f5433ae8c535db295db192

-- 
View it on GitLab: https://salsa.debian.org/java-team/plexus-compiler/-/compare/e600c0b883d3c58c8504e7dc4297d01109425d1e...0c3534256e343dac13f5433ae8c535db295db192
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-java-commits/attachments/20200301/9f7e411e/attachment.html>


More information about the pkg-java-commits mailing list