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

Reply via email to