I have come to realise that the newer ErrorProne config for JDK8 added as part of https://issues.apache.org/jira/browse/ARTEMIS-2109 doesn't actually work presently, i.e it isn't running. I have prepared a couple of alternative changes that do get it working again, but they themselves have issues and have raised a question for me.
One approach was to go back to the older style ErrorProne-specific compiler approach when running on JDK8. The problem with that one is it requires downgrading back to ErrorProne 2.3.4 as its the last that supports that method. So that doesn't seem like a great idea as it blocks upgrades. The other continues using the newer style javac plugin approach which is being used for JDK11+ (and is required for 2.4.0+ generally) but resolving the issues with the config for JDK8 to get it running there. The concern with this one is that for the ErrorProne javac plugin to be registered on JDK8 you must fork the compiler, which happens on every execution of the maven plugin. This isn't speedy, and due to the vast numbers of modules in the build this happens _a lot_, so it really adds up. The forking appears to add nearing a couple of minutes to the overall build, on top of the couple minutes running ErrorProne looks to add itself. Between them the resulting build [only, with skipTests] is about 2.5 times longer on JDK8 with this in place than it is without ErrorProne in play at all. Having been through all this, I can't help wondering if it would be worth setting things up with ErrorProne in a profile, activated if enabled by a property. That could either be only for JDK8 (where it is slowest due to all the forks), or for all the JDK versions. It would still be set to always run in CI for PRs etc in any case. Thoughts? Robbie
