我在同一文件夹中有两个proto src文件,让我们说:

第一个是foo.proto

1
2
syntax ="proto3";
package foo;

第二个是bar.proto,需要导入foo.proto

1
2
3
syntax ="proto3";
import"foo.proto";
package bar;

您可以看到它们具有不同的包名称,当我使用protoc逐一生成它们时(foo.proto是第一个原因),我生成了两个golang文件,但是我必须将它们放入2目录(您可以 不要将不同的包名称文件放在同一目录golang中)

1
2
foo/foo.pb.go
bar/bar.pb.go

但是在bar.pb.go内部,导入使用的是本地导入路径,就像

1
import foo"."

我要给protoc提供几个选项,但没有做任何建议吗?

  • 您的.proto文件彼此相邻吗? 您是否尝试过安排文件夹,以使protoc的路径看起来像您要退出的路径? 因此:带有导入" foo / foo.proto"的proto bar / bar.proto?
  • 通常,将所有原始文件放在自己的文件夹protosfoo.protoprotosbar.proto中然后进行编译是最容易的。 然后可以将输出.pb.go移到想要它们放入的包中。
  • 所有这些原始文件都位于同一文件夹(具有不同的软件包)中,令人遗憾的是我无法更改-其他团队代码,他们将JAVA与pom.xml设置结合使用,似乎没有此类问题。
  • 如果我可以将option go_package添加到原始文件中,那将解决此问题,但可惜我无法修改原始的原始文件。 似乎import_prefix在这种情况下无法正常工作。

我相信添加option go_package应该是正确的解决方案