tl;dr以前は使用するように構成されていたリポジトリGOPATH
が、モジュール用に構成されました。すべてが順調です。github.com/path/to/repo/protos
しかし、protoc は正しく (!)構造内のリポジトリ内で定義された protobufs の Golang コードを生成しますGOPATH
。私はこれを解決するために彼らを動かしています。より良い解決策はありますか?
GitHub リポジトリがあります。議論のために、それを と呼びましょうgithub.com/acme/toolbox
。サブディレクトリには、以下を含む protobuf ファイルがあります。
package acme.toolbox.v1;
option go_package = "github.com/acme/toolbox/protos";
私がGOPATH
'ing していたとき、すべてが順調で、protoc
Golang バインディングが生成され$GOPATH/src/github.com/acme/toolbox/protos
、コードのimporting が機能し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
より良い解決策はありますか?