Java 使用Gradle自动生成gRPC存根文件时出现问题
我被要求为一门大学课程实现一些gRPC类,在从一个源原型文件生成java类时遇到了一些问题 首先是一些背景知识:这是一项相当基本的服务,使用一个简单的方法接收id并返回电话和电子邮件。这是原始文件(BuscarData表示获取数据,很抱歉没有翻译!) 我的想法是用gradle插件生成类。我的身材。格雷德尔:Java 使用Gradle自动生成gRPC存根文件时出现问题,java,gradle,protocol-buffers,grpc-java,protoc,Java,Gradle,Protocol Buffers,Grpc Java,Protoc,我被要求为一门大学课程实现一些gRPC类,在从一个源原型文件生成java类时遇到了一些问题 首先是一些背景知识:这是一项相当基本的服务,使用一个简单的方法接收id并返回电话和电子邮件。这是原始文件(BuscarData表示获取数据,很抱歉没有翻译!) 我的想法是用gradle插件生成类。我的身材。格雷德尔: plugins { id 'java' id "com.google.protobuf" version '0.8.8' } apply plugin: 'java' gr
plugins {
id 'java'
id "com.google.protobuf" version '0.8.8'
}
apply plugin: 'java'
group 'org.example'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile group: 'com.google.protobuf', name: 'protobuf-java', version: '3.11.4'
implementation 'io.grpc:grpc-netty-shaded:1.29.0'
implementation 'io.grpc:grpc-protobuf:1.29.0'
implementation 'io.grpc:grpc-stub:1.29.0'
}
sourceSets {
main {
proto {
srcDir 'src/main/proto'
}
java {
srcDirs 'src/main/java', 'generated-sources/main/java'
}
}
}
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.11.0'
}
plugins {
grpc {
artifact = 'io.grpc:protoc-gen-grpc-java:1.29.0'
}
}
generateProtoTasks.generatedFilesBaseDir = 'generated-sources'
generateProtoTasks {
all().each { task ->
// Here you can configure the task
}
ofSourceSet('main')
}
}
据我所知,一切都在那里:grpc和protoc依赖项,以及使protoc能够编译grpc的插件(protoc gen grpc),以及将生成的文件存放在何处。
然而,有两个问题:
源集配置中明确添加'generated-sources/main/java'
。版本0.8.8已经有一段时间了,您可以尝试使用较新的版本。您可能遇到的问题可能有一些小的修复
对于2),您没有向每个generateProto
任务添加grpc
插件。应该是
generateProtoTasks {
all().each { task ->
task.plugins { grpc{} }
}
ofSourceSet('main')
}
对于1),插件应该将生成的文件作为java编译任务的输入,即使您没有在sourceset
配置中显式添加'generated-sources/main/java'
。版本0.8.8已经有一段时间了,您可以尝试使用较新的版本。您可能遇到的问题可能有一些小的修复
对于2),您没有向每个generateProto
任务添加grpc
插件。应该是
generateProtoTasks {
all().each { task ->
task.plugins { grpc{} }
}
ofSourceSet('main')
}