Kotlin 注解处理
简而言之,你可以在 Kotlin 项目中使用像 Dagger 或者 这样的库。
关于如何将 kapt 插件应用于 Gradle/Maven 构建中,请阅读下文。
应用 Gradle 插件:
或者,你可以使用插件 DSL 应用它:
plugins {
id "org.jetbrains.kotlin.kapt" version "1.2.50"
}
然后在 dependencies
块中使用 kapt
配置添加相应的依赖项:
dependencies {
kapt 'groupId:artifactId:版本'
}
如果你以前使用 Android 支持作为注解处理器,那么以 kapt
取代 annotationProcessor
配置的使用。如果你的项目包含 Java 类,kapt
也会顾全到它们。
注解处理器参数
使用 arguments {}
块将参数传给注解处理器:
Kapt 使用 Java 编译器来运行注解处理器。以下是将任意选项传给 javac 的方式:
kapt {
// 增加注解处理器的最大错误次数
// 默认为 100。
option("-Xmaxerrs", 500)
}
}
非存在类型校正
一些注解处理器(如 AutoFactory
)依赖于声明签名中的精确类型。默认情况下,Kapt 将每个未知类型(包括生成的类的类型)替换为 NonExistentClass
,但你可以更改此行为。将额外标志添加到 build.gradle
文件以启用在存根(stub)中推断出的错误类型:
kapt {
correctErrorTypes = true
在 compile
之前在 kotlin-maven-plugin 中添加 kapt
目标的执行:
你可以在 中找到一个显示使用 Kotlin、Maven 和 Dagger 的完整示例项目。
请注意,IntelliJ IDEA 自身的构建系统目前还不支持 kapt。当你想要重新运行注解处理时,请从“Maven Projects”工具栏启动构建。
在命令行中使用
可以使用 kotlinc 选项 Xplugin
提供该 JAR 文件的路径来附加该插件:
-Xplugin=$KOTLIN_HOME/lib/kotlin-annotation-processing.jar
以下是可用选项的列表:
- sources(必需):所生成文件的输出路径。
- classes(必需):所生成类文件与资源的输出路径。
- stubs(必需):存根文件的输出路径。换句话说,一些临时目录。
- incrementalData:二进制存根的输出路径。
- apclasspath(可重复):注解处理器 JAR 包路径。如果有的多个 JAR 包就传多个 apclasspath 选项。
- apoptions:注解处理器选项的 base64 编码列表。详见 。
- processors:逗号分隔的注解处理器全类名列表。如果指定,kapt 就不会尝试在 apclasspath 中查找注解处理器。
- verbose:启用详细输出。
- aptMode(必需)
- stubs——只生成注解处理所需的存根;
- apt——只运行注解处理;
- stubsAndApt——生成存根并运行注解处理。
- correctErrorTypes:参见下文。默认未启用。
插件选项格式为:-P plugin:<plugin id>:<key>=<value>
。选项可以重复。
一个示例:
-P plugin:org.jetbrains.kotlin.kapt3:sources=build/kapt/sources
-P plugin:org.jetbrains.kotlin.kapt3:classes=build/kapt/classes
-P plugin:org.jetbrains.kotlin.kapt3:stubs=build/kapt/stubs
-P plugin:org.jetbrains.kotlin.kapt3:apclasspath=lib/ap.jar
-P plugin:org.jetbrains.kotlin.kapt3:apclasspath=lib/anotherAp.jar
-P plugin:org.jetbrains.kotlin.kapt3:correctErrorTypes=true
Kapt 可生成 Kotlin 代码。是将生成的 Kotlin 源文件写入processingEnv.options["kapt.kotlin.generated"]
所指定的目录,这些文件会与主源代码一起编译。
可以在 Github 版本库中找到完整的示例。
请注意,对于所生成 Kotlin 文件,Kapt 不支持多轮处理。
AP/javac 选项编码
原文: