Gradle compiler errors in parallel execution in our Maven to Gradle migration

Environment: Linux, Artifactory, Java web apps, Gradle 2.12 with Spring dependency management plug-in and Flyway plug-in.

Project is massive with something between 80 and 90 sub-projects. We have had several people working on migrating it over from Maven but there have been many headaches. We’ve beaten most of them but this particular series of knots is very close to sinking us.

Problems:

  1. The build is not faster than Maven using --daemon and not --parallel.
  2. Some aspect of the build is not stable. This is to say that we get various compiler issues when we try to build. This happens regardless of whether we use --parallel or not, although it happens to a greater degree with --parallel. It also happens regardless of local or remote dependencies. We suspect that it is related to some aspect of dependency resolution. Specifically, we get “Class def not found” and / or “missing symbol”. Usually this seems to be related to a transitive dependency. If I put it in explicitly, the error goes away and I get a new one pertaining to a different transitive. I’ve experimented with putting them in as both transitive and as transitive = false.
  3. Complicating matters, we have many BOMs. Perhaps 10? Some are ours and others belong to 3rd parties. Two or three are more than a page in length.

Without --parallel we can’t seem to get the performance we need to justify the migration but we could, perhaps, survive that and wait for --parallel to finish incubating IF we could get it to build reliably. We’ve been cycling on --debug for about 2 weeks now but our shop is, naturally, inexperienced with Groovy and Gradle.

I’ll try and provide some redacted logs momentarily but these are likely to be huge. IDK if it’s practical to do so or not.

If you want the cheese points on StackOverflow, this is: