Tôi đang cố gắng xây dựng một dự án sử dụng cả bộ đệm giao thức của Google và Kotlin bằng Gradle. Tôi muốn các tệp proto để biên dịch thành nguồn Java, sau đó được gọi từ mã Kotlin của tôi.Làm cách nào để tạo bộ đệm giao thức của Google và Kotlin bằng Gradle?
file nguồn của tôi được sắp xếp như thế này:
src/main/proto/*.proto
src/main/kotlin/*.kt
src/test/kotlin/*.kt
Dưới đây là build.gradle
tập tin của tôi:
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'
}
Khi tôi chạy ./gradlew assemble
tôi nhận được một loạt các sai sót "tài liệu tham khảo không được giải quyết" trong :compileKotlin
. Sau đó tôi có thể thấy rằng không có tệp nguồn Java nào được tạo ra, do đó, có vẻ như trình biên dịch proto không được viện dẫn chút nào.
Nếu tôi xóa dòng apply plugin: 'kotlin'
, thì ./gradlew assemble
tạo thành công nguồn Java, nhưng tất nhiên nguồn Kotlin của tôi không bao giờ được biên dịch.
Làm cách nào để sửa lỗi build.gradle
để tôi có thể gọi mã protobuf của mình từ Kotlin?
Một lưu ý nhỏ: Bạn có thể thay đổi đường dẫn trong bước đầu tiên cho ' "$ {protobuf.generatedFilesBaseDir}/main/java" 'để tự động nhận thư mục thay đổi. –