Kotlin 注释处理器:无法使其工作
Kotlin annotation processor: can't make it work
我的 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>("*")
}
}
但绝对没有任何反应。没有错误,什么都没有。
我怎样才能让它发挥作用?
在我的实践中,AutoService
只是忽略了 kotlin classes。你必须使用 java class 代替,或者编写你自己的 META-INF:
main/resources/META-INF/services/javax.annotation.processing.Processor
并包含:your.package.ModelProcessor
我的 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>("*")
}
}
但绝对没有任何反应。没有错误,什么都没有。 我怎样才能让它发挥作用?
在我的实践中,AutoService
只是忽略了 kotlin classes。你必须使用 java class 代替,或者编写你自己的 META-INF:
main/resources/META-INF/services/javax.annotation.processing.Processor
并包含:your.package.ModelProcessor