2017-09-04 1 views
3

Mein gradle build funktioniert:Kotlin Anmerkung Prozessor: kann es nicht

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" 
} 

Der Prozessor nicht in einem separaten Modul ist.

Prozessor tut nichts, in #process es einfach wirft, um zu sehen, ob es funktioniert.

@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>("*") 
    } 

} 

Aber absolut passiert nichts. Kein Fehler, nichts. Wie kann ich es funktionieren lassen?

+2

, damit es funktioniert, benötigen Sie den Prozessor als Abhängigkeit der 'kapt' Konfiguration hinzufügen Hier sucht Kapt nach den Prozessoren. Sie können dies tun, indem Sie die Module und dann die Abhängigkeiten {kapt project (': processor')} 'trennen. – hotkey

+0

Wurde verschoben, um die Module Prozessor und App zu trennen. Jetzt beim Erstellen: 'Sources Ausgabeverzeichnis ist nicht für Prozessor_main angegeben, überspringen Annotationsverarbeitung ' – Sheppard

+0

@Sheppard hast du es funktioniert? Ich habe immer noch Probleme mit '@ AutoService' – user3605025

Antwort

3

In meinen Übungen ignorieren AutoService einfach Kotlin-Klassen. Sie haben stattdessen eine Java-Klasse verwenden oder eigene META-INF schreiben:

main/resources/META-INF/services/javax.annotation.processing.Processor und enthält: your.package.ModelProcessor

Verwandte Themen