我試圖建立一個項目,使用谷歌協議緩衝區和Kotlin使用Gradle。我想將原始文件編譯成Java源代碼,然後從我的Kotlin代碼中調用它。如何使用Gradle構建Google協議緩衝區和Kotlin?
我的源文件都按這樣的:
src/main/proto/*.proto
src/main/kotlin/*.kt
src/test/kotlin/*.kt
這是我的build.gradle
文件:
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'
}
當我運行./gradlew assemble
我是否會在:compileKotlin
一串 「未解決的參考」 錯誤。之後,我可以看到沒有生成Java源文件,因此似乎根本沒有調用proto編譯器。
如果我刪除apply plugin: 'kotlin'
行,然後./gradlew assemble
成功生成Java源代碼,但是當然我的Kotlin源代碼從不編譯。
如何修復我的build.gradle
以便我可以從Kotlin撥打我的protobuf代碼?
一個小小的提示:您可以更改在第一步的路徑' 「$ {protobuf.generatedFilesBaseDir}/main/java」'自動選擇更改的文件夾。 –