当前位置: 首页 > 知识库问答 >
问题:

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

蒯华彩
2023-03-14

在静态编程语言1.3.30中,添加了对增量注释处理的支持:https://blog.jetbrains.com/kotlin/2019/04/kotlin-1-3-30-released/根据文档:

请注意,在当前实现中,使用任何非增量注释处理器或依赖项的 ABI 更改(到目前为止,包括修改内部声明)将导致给定模块的非增量注释处理。

我有一个带有多个注释处理器的多模块项目。只有一部分是增量的。至少就我所知,有些模块只使用增量注释处理器。

我的问题是:有没有办法检查是否发生了增量注释处理?例如。Gradle中是否有任何特定的控制台日志表明这一点?我想确认确实使用了增量注释处理。

共有1个答案

刁浩言
2023-03-14

我能够通过添加

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

牙签是我正在使用的阿迪框架,它从2.x开始支持增量注释处理。

如果有一个不是增量的注释处理器,它也会打印,例如:

[INFO] Incremental KAPT support is disabled. Processors that are not incremental: butterknife.compiler.ButterKnifeProcessor.
 类似资料:
  • 出于某种原因,Kapt抱怨说我的一个模块没有启用增量编译。然而,我看不出有什么不应该的理由。 运行core时的警告消息:kaptKotlin 错误显示<code>io.github.mdsimmo.cmdmsg。TextPreprocessor模块有故障,但我不明白为什么它不是增量的? 我已经在每个模块的< code>gradle.properties中添加了< code > kapt . inc

  • 我有一个注释和三个类,像这样: 有没有办法确定当前注释是直接在类中继承还是声明的? 类似于方法<代码>公共布尔值的东西是默认的(类 导出输出:

  • 在添加com.google.dagger:dagger-android-support依赖项后,我得到了这个gradle错误。 这是我的构建的一部分

  • 我看到一个例子解释了Kotlin JVM的KATP,它正在工作。 我想知道它是否支持Kotlin JS?有什么例子吗?

  • 我想从kotlin实体类生成jpa querydsl文件。 在线上有一个很好的例子,说明如何使用gradle生成dsl文件https://github.com/JetBrains/kotlin-examples/blob/master/gradle/kotlin-querydsl/build.gradle. 然而,我试图在maven中实现它,但没有运气。我目前的pom在下面。有人知道问题可能是什么

  • 问题内容: 我正在使用反射来查看附加到类的属性的注释是否具有特定类型。目前我正在做: 这让我有些不高兴,因为它依赖于完全合格的类名称的字符串。如果将来更改命名空间,则可能会导致细微的错误。 我想要做: 但是是抽象类,无法实例化。有没有一种方法可以针对接口或抽象类进行模拟(或基本上使用)? 问题答案: 你只是在寻找 ?