Kotlin註解處理工具

Kotlin 插件支持註解處理器,如 DaggerDBFlow
爲了讓它們與 Kotlin 類一起工作,需要應用 kotlin-kapt 插件:

譯註:kapt 即 Kotlin annotation processing tool(Kotlin 註解處理工具)縮寫。

Gradle 配置

apply plugin: 'kotlin-kapt'

或者,從 Kotlin 1.1.1 起,你可以使用插件 DSL 應用它:

plugins {
    id "org.jetbrains.kotlin.kapt" version "<要使用的版本>"
}

然後在 dependencies 塊中使用 kapt 配置添加相應的依賴項:

dependencies {
    kapt 'groupId:artifactId:版本'
}

如果你以前使用 android-apt 插件,請將其從 build.gradle 文件中刪除,並用 kapt 取代 apt 配置的用法。如果你的項目包含 Java 類,kapt 也會顧全到它們。

如果爲 androidTesttest 源代碼使用註解處理器,那麼相應的 kapt 配置名爲 kaptAndroidTestkaptTest。請注意 kaptAndroidTestkaptTest 擴展了 kapt,所以你可以只提供 kapt 依賴而它對生產和測試源代碼都可用。

一些註解處理器(如 AutoFactory)依賴於聲明簽名中的精確類型。默認情況下,Kapt 將每個未知類型(包括生成的類的類型)替換爲 NonExistentClass,但你可以更改此行爲。將額外標誌添加到 build.gradle 文件以啓用在存根(stub)中推斷出的錯誤類型:

kapt {
    correctErrorTypes = true
}

請注意,這個選項是實驗性的,且默認是禁用的。

Maven 配置(自 Kotlin 1.1.2 起)

compile 之前在 kotlin-maven-plugin 中添加 kapt 目標的執行:

<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 示例版本庫 中找到一個顯示使用 Kotlin、Maven 和 Dagger 的完整示例項目。

請注意,IntelliJ IDEA 自身的構建系統目前還不支持 kapt。當你想要重新運行註解處理時,請從「Maven Projects」工具欄啓動構建。