【发布时间】:2019-07-11 21:59:14
【问题描述】:
tl;dr 以前配置为使用 GOPATH 的存储库现在配置为模块。一切都好,越来越好。但是,当我现在希望在 GOPATH 之外的源中生成这些时,protoc 正确(!)为在 github.com/path/to/repo/protos 结构中定义的 protobuf 生成 Golang 代码。我正在移动他们来解决这个问题。有没有更好的解决方案?
我有一个 GitHub 存储库。为了便于讨论,我们称之为github.com/acme/toolbox。在一个子目录中,我有 protobuf 文件,其中包括:
package acme.toolbox.v1;
option go_package = "github.com/acme/toolbox/protos";
当我在 GOPATH'ing 时,一切都很好,protoc 会在 $GOPATH/src/github.com/acme/toolbox/protos 中生成 Golang 绑定,而我的代码导入 pb "github.com/acme/toolbox/protos" 会起作用。
迁移到 Go Modules 并非没有痛苦,但收益大于成本,而且我正在为自己和代码进行面向未来的验证。
我的问题是,我看不到如何让 protoc 生成 Golang 绑定到我的任意位置以及位于 GOPATH 之外的克隆。
我在生成文件后移动文件,但这感觉......不优雅:
cd ${TOOLBOX}
protoc \
--proto_path=./protos \
--go_out=plugins=grpc:/go/src
./protos/*.proto
mv ${GOPATH}/src/github.com/acme/toolbox/protos/*.go ${TOOLBOX}/protos
有没有更好的解决方案?
【问题讨论】:
标签: go grpc go-modules