他のプロト定義をインポートするときに見つからないディレクトリで失敗し、私はGradleのタスクとして、いくつかのいるProtobuf定義をコンパイルしようとしているが、ソースなしの世代と次のエラーを取得しています:gRPCのGradleの:generateProtoが
* What went wrong:
Execution failed for task ':generateProto'.
> protoc: stdout: . stderr: /Users/ash/IdeaProjects/kotlin/grpc/build/extracted-protos/main: warning: directory does not exist.
service-definitions.proto:10:17: "Empty" is not defined.
service-definitions.proto:10:33: "Empty" is not defined.
service-definitions.proto:15:17: "SimpleRequest" is not defined.
service-definitions.proto:15:41: "SimpleResponse" is not defined.
service-definitions.proto:21:27: "StreamingOutputCallRequest" is not defined.
service-definitions.proto:21:71: "StreamingOutputCallResponse" is not defined.
service-definitions.proto:27:33: "StreamingInputCallRequest" is not defined.
service-definitions.proto:27:69: "StreamingInputCallResponse" is not defined.
service-definitions.proto:34:29: "StreamingOutputCallRequest" is not defined.
service-definitions.proto:34:73: "StreamingOutputCallResponse" is not defined.
service-definitions.proto: warning: Import empty.proto but not used.
service-definitions.proto: warning: Import messages.proto but not used.
これだけ他の定義をインポートする定義をコンパイルしようとすると発生します。 service-definitions.proto
の定義を削除すると、他のものがコンパイルされ、ソースが生成されます。
protobufの定義は、vertx-grpc examplesから入手でき、それらは$projectDir/src/main/proto
にあります。私はデフォルトビルドの場所を変更していないので、ソースは$projectDir/build/generated/source/proto
に生成されています。しかし、extracted-protos
ディレクトリの代わりに、extracted-include-protos
(おそらくディレクトリが見つかりませんでしたエラーを説明しています)があります。
私のgradle.build
ファイルは、使用する必要があります。 gRPCプラグインは、io.grpc..
のバージョンではなく、Vert.xの成果物を使用していることに注意してください(実際はその上にあるラッパーです)。私はio.grpc
バージョンのVert.xバージョンを交換しようとしましたが、同じエラーが発生します。インポートするときに、私は必要な定義がすべてあることを考えると、まったくなぜそれが(a)の間違った場所に抽出されたファイルを探して、任意の設定を変更し、かつ(b)は、抽出したファイルを探していませんでした
group 'grpc'
version '1.0-SNAPSHOT'
buildscript {
ext.kotlin_version = '1.1.3'
repositories {
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.1"
}
}
apply plugin: 'kotlin'
apply plugin: "java"
apply plugin: "com.google.protobuf"
apply plugin: "idea"
protobuf {
//generatedFilesBaseDir = "$projectDir/build/generated/source/proto"
protoc {
artifact = "com.google.protobuf:protoc:3.3.0"
}
plugins {
grpc {
artifact = "io.vertx:protoc-gen-grpc-java:1.3.0"
}
}
generateProtoTasks {
all().each { task ->
task.plugins {
grpc {}
}
}
}
}
clean {
delete protobuf.generatedFilesBaseDir
}
idea {
module {
sourceDirs += file("${protobuf.generatedFilesBaseDir}/main/java")
sourceDirs += file("${protobuf.generatedFilesBaseDir}/main/grpc")
}
}
sourceSets {
main {
java {
srcDirs += "${protobuf.generatedFilesBaseDir}/main/java"
srcDirs += "${protobuf.generatedFilesBaseDir}/main/grpc"
}
}
}
repositories {
jcenter()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
compile "io.vertx:vertx-core:3.4.2"
compile "io.vertx:vertx-web:3.4.2"
compile "io.vertx:vertx-grpc:3.4.2"
}
compileKotlin {
kotlinOptions {
jvmTarget = "1.8"
apiVersion = "1.1"
languageVersion = "1.1"
}
}
compileTestKotlin {
kotlinOptions {
jvmTarget = "1.8"
apiVersion = "1.1"
languageVersion = "1.1"
}
}
src/main/proto
ディレクトリにありますか?
完全なソースは、私の[GitHubのレポ](https://github.com/AshleyByeUK/grpc)で入手可能です明快さを提供したり、問題を再現することができます。 – amb85