Kotlin 插件支持注解處理器,如 Dagger 或 DBFlow 。
為了讓它們與 Kotlin 類一起工作,需要應(yīng)用 kotlin-kapt 插件:
譯注:kapt 即 Kotlin annotation processing tool(Kotlin 注解處理工具)縮寫。
apply plugin: 'kotlin-kapt'
或者,從 Kotlin 1.1.1 起,你可以使用插件 DSL 應(yīng)用它:
plugins {
id "org.jetbrains.kotlin.kapt" version "<要使用的版本>"
}
然后在 dependencies 塊中使用 kapt 配置添加相應(yīng)的依賴項(xiàng):
dependencies {
kapt 'groupId:artifactId:版本'
}
如果你以前使用 android-apt 插件,請(qǐng)將其從 build.gradle 文件中刪除,并用 kapt 取代 apt 配置的用法。如果你的項(xiàng)目包含 Java 類,kapt 也會(huì)顧全到它們。
如果為 androidTest 或 test 源代碼使用注解處理器,那么相應(yīng)的 kapt 配置名為 kaptAndroidTest 和 kaptTest。請(qǐng)注意 kaptAndroidTest 和 kaptTest 擴(kuò)展了 kapt,所以你可以只提供 kapt 依賴而它對(duì)生產(chǎn)和測試源代碼都可用。
一些注解處理器(如 AutoFactory)依賴于聲明簽名中的精確類型。默認(rèn)情況下,Kapt 將每個(gè)未知類型(包括生成的類的類型)替換為 NonExistentClass,但你可以更改此行為。將額外標(biāo)志添加到 build.gradle 文件以啟用在存根(stub)中推斷出的錯(cuò)誤類型:
kapt {
correctErrorTypes = true
}
請(qǐng)注意,這個(gè)選項(xiàng)是實(shí)驗(yàn)性的,且默認(rèn)是禁用的。
在 compile 之前在 kotlin-maven-plugin 中添加 kapt 目標(biāo)的執(zhí)行:
<execution>
<id>kapt</id>
<goals>
<goal>kapt</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>src/main/kotlin</sourceDir>
<sourceDir>src/main/java</sourceDir>
</sourceDirs>
<annotationProcessorPaths>
<!-- 在此處指定你的注解處理器。 -->
<annotationProcessorPath>
<groupId>com.google.dagger</groupId>
<artifactId>dagger-compiler</artifactId>
<version>2.9</version>
</annotationProcessorPath>
</annotationProcessorPaths>
</configuration>
</execution>
你可以在
Kotlin 示例版本庫 中找到一個(gè)顯示使用 Kotlin、Maven 和 Dagger 的完整示例項(xiàng)目。
請(qǐng)注意,IntelliJ IDEA 自身的構(gòu)建系統(tǒng)目前還不支持 kapt。當(dāng)你想要重新運(yùn)行注解處理時(shí),請(qǐng)從“Maven Projects”工具欄啟動(dòng)構(gòu)建。