Próbuję zbudować projekt, który używa zarówno buforów protokołu Google i Kotlin za pomocą Gradle. Chcę, aby pliki proto zostały skompilowane do źródła Java, które jest następnie wywoływane z mojego kodu Kotlin.Jak zbudować bufory protokołu Google i Kotlin za pomocą Gradle?
Moje pliki źródłowe są ułożone tak:
src/main/proto/*.proto
src/main/kotlin/*.kt
src/test/kotlin/*.kt
Oto mój build.gradle
file:
version '1.0-SNAPSHOT'
apply plugin: 'kotlin'
apply plugin: 'java'
apply plugin: 'com.google.protobuf'
repositories {
mavenCentral()
maven { url "http://dl.bintray.com/kotlin/kotlin-eap-1.1" }
}
buildscript {
ext.kotlin_version = '1.1-M02'
repositories {
mavenCentral()
maven { url "http://dl.bintray.com/kotlin/kotlin-eap-1.1" }
}
dependencies {
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.0.0'
}
}
dependencies {
compile 'com.google.protobuf:protobuf-java:3.0.0'
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
testCompile 'junit:junit:4.12'
}
Kiedy biegnę ./gradlew assemble
mam kilka "Nierozwiązane odniesienia" błędy podczas :compileKotlin
. Potem widzę, że nie ma generowanych plików źródłowych Java, więc wygląda na to, że kompilator proto nie jest w ogóle wywoływany.
Po usunięciu linii apply plugin: 'kotlin'
, ./gradlew assemble
z powodzeniem generuje źródło Java, ale oczywiście moje źródło Kotlin nigdy nie jest kompilowane.
Jak naprawić swój build.gradle
, aby móc wywoływać mój kod protobuf z Kotlin?
Jedna drobna uwaga: można zmienić ścieżkę w pierwszym etapie do ' "$ {protobuf.generatedFilesBaseDir}/main/java" 'automatycznie wybiera zmienne foldery. –