Annotation processor message doesn't tell me the jar file that has the AP


(Rob Reece) #1

From the docs “As a user you can see which annotation processors are triggering full recompilations in the --info log.”

The info log says

"> Task :Aproject:B:compileJava
Task ‘:Aproject:B:compileJava’ is not up-to-date because:
Input property ‘classpath’ file myjar-0.0.1-SNAPSHOT.jar has changed.
Input property ‘effectiveAnnotationProcessorPath’ file myjar-0.0.1-SNAPSHOT.jar has changed.
Created classpath snapshot for incremental compilation in 0.187 secs. 7840 duplicate classes found in classpath (see all with --debug).
Class dependency analysis for incremental compilation took 0.01 secs.
Full recompilation is required because Annotation processor path changed. Analysis took 0.206 secs.
"

Should I be seeing a better message that can help me track down the jar that is leaking an AP onto my classpath?


Why is compile avoidance disabled on my project
(Rob Reece) #2

Sorry I have should have noted that this is using Gradle 4.10.2.


(Rob Reece) #3

I dug around in the code to see what is going on. In Gradle 4.10.2, the offending file is passed into the method RecompilationSpec.setFullRebuildCause, but that method only uses the description to form the final message. The given File is ignored if description is non-null.

See here. https://github.com/gradle/gradle/blob/master/subprojects/language-java/src/main/java/org/gradle/api/internal/tasks/compile/incremental/recomp/RecompilationSpec.java#L50

And the call site is here. https://github.com/gradle/gradle/blob/master/subprojects/language-java/src/main/java/org/gradle/api/internal/tasks/compile/incremental/recomp/AnnotationProcessorChangeProcessor.java#L33

However, in the latest Gradle, the above line has been changed to pass null. I guess that possibly has to do with annotation processors being ignored on the compilation classpath. Not sure, but in Gradle 4.10.2 it seems to be a bug in how the message is formed.