我被要求为一门大学课程实现一些gRPC类,在从一个源proto文件生成java类时遇到了一些问题。
首先是一些背景知识:这是一项相当基本的服务,有一个简单的方法,可以接收id并返回电话和电子邮件。这是原始文件(BuscarData表示获取数据,很抱歉没有翻译完!):
syntax = 'proto3';
option java_multiple_files=true;
option java_generic_services= true;
package uy.edu.um.sd20;
message DataRequest {
int32 id = 1;
}
message DataResponse {
string phone = 1;
string email = 2;
}
service DataRepo {
rpc BuscarData (DataRequest) returns (DataResponse);
}
我的想法是用gradle插件生成类。我的身材。格拉德尔:
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),以及将生成的文件存放在哪里。然而,有两个问题:
我添加了项目文件结构的截图:img
正如您所看到的,相当多(如果不是全部的话)gradle设置是从许多不同的网站复制粘贴和清除的。我希望我足够小心,不要重复任何进口产品。也有类似的问题,我在那里尝试了解决方案,但没有运气。有一个例子,我知道我必须包括gen grpc插件:另一个SO问题
欢迎提供任何有关其他内容的提示!我对stackoverflow问题的提问是新手,所以我可能在问题的特殊性或问题的目的方面犯了错误。
谢谢
弗兰丽。
对于1),插件应将生成的文件作为java编译任务的输入,即使您没有在源集配置中明确添加“generated-sources/main/java”。版本0.8.8已经有一段时间了,您可以尝试使用较新的版本。对于您可能遇到的问题,可能有一些小的修复。
对于2),您没有将grpc
插件添加到每个GenerateProto
任务。应该是
generateProtoTasks {
all().each { task ->
task.plugins { grpc{} }
}
ofSourceSet('main')
}
我设法通过.proto文件生成了类,但它们在构建中。 我希望在main中生成类,因为当我要扩展存根时,不可能实现这些方法。 瞧: 文件.proto: proto文件在主文件夹中。 有人知道怎么解决吗?
我添加了maven配置,如下所示。 我正在通过“mvn proc-jar: run”执行它,但是它跳过了grpc服务存根,只将“消息”转换为java代码。 输出为 我有一个简单的proto文件定义为 我只输出生成为HelloReply、HelloReplyOrBuilder、HelloRequest、HelloRequestOrBuilder、HelloWorldProto的文件。缺少迎宾Grpc
Spring RestDocs可用于为具有Spring MockMvc或RestEasy的HTTP API生成文档(例如,asciidoctor格式)。在生成API文档的同时,还可以使用Spring Cloud Contract WireMock生成WireMock存根。只需编写正常的RestDocs测试用例,并使用@AutoConfigureRestDocs在restdocs输出目录中自动存储存
正如问题所说,我从源代码编译了grpc,也做了,但是,grpc_python_plugin的
与之相反:从Swagger/OpenAPI生成Spring MVC控制器 我需要将我的Spring Boot项目与远程服务器集成,以公开Swagger OpenAPI。我可以成功下载《狂妄自大》。jsondescriptor,但我希望在为许多Java方法生成REST存根方面获得一些自动帮助。我用的是Gradle。我更喜欢大摇大摆地做到我的项目中,既可以脱机构建(远程服务不公开),又可以利用Grad
我使用proto编译器3.4.0版编译了GNMI proto文件。我的proto文件如下所示:https://github.com/openconfig/gnmi/blob/master/proto/gnmi/gnmi.proto 我生成GRPC存根使用 并使用了此处推荐的pom文件,如下所示: 现在我正在尝试订阅如下所示的服务: 想知道我错过了什么。我正在使用客户端和证书连接到服务,但无法解决上