导入的protobuf在gRPC中应该有选项吗?

问题描述

我试图在文档中找到答案,但是找不到。 我是gRPC和proto文件的新手,也许这是一个非常基本的问题,对此感到抱歉。

我在同一目录级别有两个文件

- mainProto.proto
- importedProto.proto

主要原型包括选项

option csharp_namespace = "business.products.accounts";
option go_package = "protobuf/com/bbva/business.accounts;products";
option java_multiple_files = true;
option java_package = "com.bbva.business.products.accounts";

importedProto 没有选项。它们在同一包中。 我是否需要在导入的原型中声明相同的选项?

再次对不起,这是一个基本问题,但是我找不到答案,逻辑不能告诉我,因为它们在同一个程序包中,但是如果另一个程序包包含它,它将从另一个主要的原型buf继承选项吗?还是每个原始文件可以有不同的选择?

解决方法

选项仅适用于放置在其中的文件/消息/字段/服务/ rpc。因此,文件顶层的选项仅适用于文件,不适用于包。您需要为每个文件重复这些选项。

Protoc可以一次为一个文件生成代码。如果一个文件的选项可能影响另一个文件,则意味着您将获得不同的结果,具体取决于一次调用protoc一起生成的文件。为了解决这个问题,协议必须要求一次生成一个包中的所有协议,而事实并非如此。 Protoc更类似于C / C ++,在C / C ++中,每个文件可以单独编译,而程序包只是一个命名空间机制。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...