vertx-codegen icon indicating copy to clipboard operation
vertx-codegen copied to clipboard

Vert.x Code Generator breaks Java compilation with Gradle v4.7 annotationProcessor

Open vorburger opened this issue 7 years ago • 2 comments

I have reason to believe that the Vert.x Code Generator APT processor completely breaks Java compilation in Gradle when using with Gradle v4.7 and the annotationProcessor.

Found in https://github.com/vorburger/minecraft-storeys-maker/issues/53, but now reproduced in https://github.com/vorburger/vertx-gradle-errorprone-bug-reproducer. That very simple project fails when using annotationProcessor (but works when using compile). But an APT processor on compile instead of annotationProcessor breaks Error Prone. It's also "not right", and AFAIK doesn't play nice with Gradle's incremental build.

In an ideal world, Vert.x's Code Generator should "just work" (out of the box) with Gradle v4.7 annotationProcessor.

  • https://docs.gradle.org/4.7/release-notes.html
  • https://docs.gradle.org/4.6/release-notes.html#convenient-declaration-of-annotation-processor-dependencies

vorburger avatar May 18 '18 10:05 vorburger

Apparently, the MVEL generator loads codegen.json and templates from its classloader. If it's expected that these are on the compile classpath (rather than the processor path), then it should use the processingEnv.getFiler() instead.

Fwiw, you should be able to reproduce it with Maven too using the <annotationProcessorPaths> from maven-compiler-plugin: https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#annotationProcessorPaths

tbroyer avatar May 18 '18 10:05 tbroyer

@tbroyer we meanwhile figured it's actually got nothing to do with that - it's some APT issue in Gradle.

TODO check if https://docs.gradle.org/4.8-rc-1/release-notes.html makes any difference.

vorburger avatar May 20 '18 21:05 vorburger