2017-02-17 1 views
1

klasse Ich benutze Kotlin und Java mit Spring Boot, um mein Projekt zu entwickeln. Mein Build-Tool ist gradle, eine Aufgabe wie folgt definiert ist:Wie kotlin class hinzufügen, um JavaCompile task

configurations { 
    providedRuntime 
    jpametamodel 
} 

dependencies { 
    jpametamodel ('org.hibernate:hibernate-jpamodelgen:4.3.11.Final') 
} 

task generateMetaModel(type: JavaCompile, group: 'build', description: 'metamodel generate') { 

    source = sourceSets.main.java 
    classpath = configurations.compile + configurations.jpametamodel 
    options.compilerArgs = ["-proc:only"] 
    destinationDir = sourceSets.generated.java.srcDirs.iterator().next() 

    doFirst { 
     delete(sourceSets.generated.java.srcDirs) 
    } 
} 

Diese Aufgabe aus Kotlin Klasse funktioniert, aber wenn ich Kotlin Klasse hinzufügen, kann die Aufgabe nicht funktioniert, indem Sie die folgenden Fehler werfen:

Hibernate JPA 2 Static-Metamodel Generator 4.3.11.Final 
/.../src/main/java/com/app/web/rest/UserResource.java:18: 
Cannot find ..... 
import com.app.web.rest.dto.SimpleUser; 
         ^
Symbol: Class SimpleUser 
Position: Package com.app.web.rest.dto 

Die SimpleUser werden in Kotlin Datei definiert:

SimpleUser.kt 
data class SimpleUser(val str:String) 
+0

FYI Sie müssen kein Meta-Modell generieren, wenn Sie nicht wollen - siehe [kotlin-jpa-Spezifikation-dsl] (https://github.com/consoleau/kotlin-jpa-specification- dsl) –

+0

Das Meta-Modell wird in meinem anderen Java-Code verwendet. – Exia

Antwort

0

die Ruhe Metamodell Generator als JSR 269 Annotations-Prozessor implementiert ist. Wenn Sie Kotlin verwenden, müssen Sie die Annotationsverarbeitung explizit unter applying the kapt compiler plugin aktivieren. Wenn Sie das tun, werden Sie feststellen, dass das Metamodell für Kotlin-Entitäten generiert wird.

Verwandte Themen