Our org's builds have been using Java 8 for quite a while. We're starting to move some builds to Java 11. We're seeing some builds failing with the following: ------------- Execution default-compile of goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile failed: An API incompatibility was encountered while executing org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile: java.lang.UnsupportedClassVersionError: org/eclipse/jdt/core/compiler/batch/BatchCompiler has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 -------------
This indicates that the artifact with the BatchCompiler class (ecj) was compiled with Java 11, but the current JVM is Java 8. I'm trying to understand the possible scenarios that could produce this, so we can mitigate it properly. This artifact is specified as a direct dependency of the "maven-compiler-plugin". It would help to understand exactly which Maven goals will install plugin dependencies into the local maven repo. At least our builds only do "mvn package" or "mvn deploy", depending on what is being built. However, our builds are run on a pool of Jenkins build nodes, and I'm not certain whether those build nodes are shared with other projects in our large enterprise. I'm trying to determine that. We may determine that because of these issues, we will have to specify a fresh empty local repository for every build, which will obviously make our builds take longer.