我正在使用git-submodules在多个项目中共享.proto文件。
现在我的问题是如何正确设置导入?
在微服务环境中,所有服务存储库都有一个git-submodule,其中包含共享的.proto文件:
git.dev/proto
作为子模块)git.dev/proto
作为子模块)git.dev/proto
作为子模块)shared/shared.proto
)shared/shared.proto
)当前服务原型文件的典型标题如下:
git.dev/proto/fooservice/fooservice.proto
syntax = "proto3";
package abc.foo;
import "shared/shared.proto";
option go_package = "foopb";
option java_multiple_files = true;
option java_outer_classname = "FooProto";
option java_package = "com.abc.foo";
import "shared/shared.proto";
可以使git.dev/ proto 存储库轻巧,但会在代码生成过程中引起导入问题。import "proto/shared/shared.proto";
可以在服务库中生成代码,但是当然会导致git.dev/ proto 回购中的掉毛问题proto
文件夹? go_options.import_path
设置为例如git.dev/fooservice
会生成正确的golang导入路径for x in proto/**/*.proto; do protoc -Iproto --go_out=plugins=grpc,paths=source_relative:src/proto $x; done
,但这不会导致有效的golang导入路径,只要我不将完整的git路径添加到go_package选项即可。这样做当然与git-submodule方法(选择哪个git repo路径,/ proto或/*service.git吗?)冲突。谢谢!