检查kapt是否使用增量注释处理

5
在 Kotlin 1.3.30 中增加了对增量注解处理的支持:https://blog.jetbrains.com/kotlin/2019/04/kotlin-1-3-30-released/。根据文档所述:
请注意,在当前实现中,使用任何非增量注解处理器或更改依赖项的ABI(迄今为止,包括修改内部声明)将导致给定模块的非增量注解处理。
我有一个多模块项目,其中包含多个注解处理器。只有其中一些是增量的。据我所知,有些模块至少使用了增量注解处理器。
我的问题是: 是否有一种方法可以检查是否发生了增量注解处理?例如,Gradle 中是否有任何特定的控制台日志指示此操作?我想确认是否确实使用了增量注解处理。

我必须尝试这个。 - Shomu
1个回答

9
我可以确定,通过添加以下内容:
kapt.verbose=true

在根项目的gradle.properties文件中,这会导致在控制台上打印出以下内容,例如在更改公共方法时:
Javac options: {}
[incremental apt] Changed files: [/Users/me/workspace/my-project/core/common/build/tmp/kapt3/stubs/foo/bar/ChangedClassName.java]
...
[INFO] Need to discovery annotation processors in the AP classpath
[INFO] Annotation processors: toothpick.compiler.factory.FactoryProcessor, toothpick.compiler.memberinjector.MemberInjectorProcessor
[INFO] Processing java sources with annotation processors: /Users/me/workspace/my-project/core/common/build/tmp/kapt3/stubs/foo/bar/ChangedClassName.java
[INFO] Annotation processing complete, errors: 0, warnings: 0
[INFO] Annotation processor stats:
[INFO] IncrementalProcessor: total: 61 ms, init: 1 ms, 3 round(s): 59 ms, 0 ms, 1 ms
[INFO] IncrementalProcessor: total: 1 ms, init: 1 ms, 3 round(s): 0 ms, 0 ms, 0 ms

这是增量注释处理被使用的时候。 进行全新构建时,会打印出以下内容:
Javac options: {}
[incremental apt] Changed files: []
...
[INFO] Need to discovery annotation processors in the AP classpath
[INFO] Annotation processors: toothpick.compiler.factory.FactoryProcessor, toothpick.compiler.memberinjector.MemberInjectorProcessor
[INFO] Processing java sources with annotation processors: [ALL THE  FILES IN THE MODULE ARE LISTED HERE]
[INFO] Annotation processing complete, errors: 0, warnings: 0
[INFO] Annotation processor stats:
[INFO] IncrementalProcessor: total: 124 ms, init: 1 ms, 3 round(s): 122 ms, 1 ms, 0 ms
[INFO] IncrementalProcessor: total: 1 ms, init: 0 ms, 3 round(s): 1 ms, 0 ms, 0 ms

我使用的是Toothpick依赖注入框架,2.x版本开始支持增量注解处理。

如果有一个不支持增量处理的注解处理器,则会输出以下内容:

[INFO] Incremental KAPT support is disabled. Processors that are not incremental: butterknife.compiler.ButterKnifeProcessor.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接