Я пытаюсь создать проект, который использует как буферы протокола Google, так и Kotlin, используя Gradle. Я хочу, чтобы прото файлы компилировались в источник Java, который затем вызывается из моего кода 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, поэтому кажется, что прото-компилятор вообще не вызывается.
Если я удаляю строку apply plugin: 'kotlin'
, то ./gradlew assemble
успешно генерирует источник Java, но, конечно, мой источник Kotlin никогда не компилируется.
Как исправить мой build.gradle
, чтобы я мог вызвать свой код protobuf из Kotlin?