Kotlin注释处理器:无法使其工作

时间:2017-09-04 07:37:26

标签: kotlin kapt

我的gradle构建:

buildscript {
    ext.kotlin_version = '1.1.4-3'
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: "kotlin-kapt"

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}


kapt {
    processors = "libs.orm.codeGenerators.ModelProcessor" //PROCESSOR
}


dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"

    compile "com.google.auto.service:auto-service:1.0-rc3"   
}

处理器不在单独的模块中。

处理器什么都不做,只是在#process抛出,看看它是否正常工作。

@AutoService(Processor::class)
@SupportedSourceVersion(SourceVersion.RELEASE_8)
class ModelProcessor : AbstractProcessor() {

    override fun process(annotations: MutableSet<out TypeElement>?, roundEnv: RoundEnvironment): Boolean {
        throw(Throwable("foo"))
        return true
    }

    override fun getSupportedAnnotationTypes() : MutableSet<String> {
        return mutableSetOf<String>("*")
    }

}

但绝对没有任何反应。没有错误,没有。 我怎样才能使它发挥作用?

1 个答案:

答案 0 :(得分:3)

在我的实践中,AutoService只是忽略kotlin类。您必须使用java类,或编写自己的META-INF:

main/resources/META-INF/services/javax.annotation.processing.Processor 并包含:your.package.ModelProcessor