在自己的原型上导入供应商原型

时间:2018-04-12 10:10:39

标签: go protocol-buffers

如何将外部(在供应商文件夹上)proto导入到我自己的原型中?

我用这个:

syntax = "proto3";
package command;
option go_package = "api";

import "github.com/service/command.proto";

service CommandService {
    rpc Push(Command) returns (PushResponse);
}

message PushResponse {
    string id = 1;
}

但是我收到一个错误,找不到该文件:

> protoc -I api api/command.proto --go_out=plugins=grpc:api
github.com/service/command.proto: File not found.

这也给出了同样的错误:

> protoc -I api -I vendor/github.com/service api/command.proto --go_out=plugins=grpc:api
github.com/service/command.proto: File not found.

我尝试在.proto文件上添加vendor/前缀,但没有成功。

1 个答案:

答案 0 :(得分:1)

您需要{<1}}每个文件夹启动从中寻找导入。 -I然后使用import语句中指定的相对路径尝试所有这些;所以:使用:

import

protoc -I api [other-options] some.proto some.proto,那么您需要一个文件系统布局,如:

import "github.com/service/command.proto";

(其中[current folder] - some.proto - [api] - [github.com] - [service] - command.proto 是文件夹)

请注意,如果省略[...],则假定当前目录为单个导入根目录,因此您可以:

-I

并使用[current folder] - some.proto - [github.com] - [service] - command.proto