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?
Sorry I have should have noted that this is using Gradle 4.10.2.
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.