检查 kapt 是不是使用增量注释处理
Posted
技术标签:
【中文标题】检查 kapt 是不是使用增量注释处理【英文标题】:Checking if kapt uses incremental annotation processing检查 kapt 是否使用增量注释处理 【发布时间】:2019-10-01 14:26:09 【问题描述】:在 Kotlin 1.3.30 中添加了对增量注释处理的支持:https://blog.jetbrains.com/kotlin/2019/04/kotlin-1-3-30-released/ 根据文档:
请注意,在当前实现中,使用任何非增量 注释处理器或依赖项的 ABI 的更改(到目前为止, 包括修改内部声明)将导致 给定模块的非增量注释处理。
我有一个带有多个注释处理器的多模块项目。只有其中一些是增量的。至少据我所知,有些模块仅使用增量注释处理器。
我的问题是: 有没有办法检查增量注释处理是否发生?例如。 Gradle中是否有任何特定的控制台日志表明这一点?我想确认实际上使用了增量注释处理。
【问题讨论】:
I have to try this. 【参考方案1】:我可以通过添加来确定
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 是我正在使用的 DI 框架,从 2.x 开始支持增量注释处理。
如果有一个不是增量的注释处理器,这也会打印例如:
[INFO] Incremental KAPT support is disabled. Processors that are not incremental: butterknife.compiler.ButterKnifeProcessor.
【讨论】:
以上是关于检查 kapt 是不是使用增量注释处理的主要内容,如果未能解决你的问题,请参考以下文章