我想导入。proto文件定义在不同的项目到我的golang项目,并使用在其中定义的消息类型。
我要导入的Proto文件是:https://github.com/lyft/clutch/blob/main/api/k8s/v1/k8s.proto
我添加了import语句:
import "github.com/lyft/clutch/api/k8s/v1/k8s.proto";
使用消息类型"Job"在那个文件中,我添加了
message Jobs {
repeated clutch.k8s.v1.Job job = 1;
}
当我尝试编译proto文件时,我得到错误
Import "github.com/lyft/clutch/blob/main/api/k8s/v1/k8s.proto" was not found or had errors.
"clutch.k8s.v1.Job" is not defined.
为了编译您的原型,您应该克隆依赖库并在protoc
导入中设置为包含路径,例如:
job.proto
syntax = "proto3";
package clutch.k8s.v1;
// degine
option go_package = "github.com/job";
import "api/k8s/v1/k8s.proto";
message Jobs {
repeated clutch.k8s.v1.Job job = 1;
}
compile.sh
proto_out_dir=.
GOBIN=~/go/bin
protoc
--go_out "${proto_out_dir}"
--go_opt paths=source_relative
--go-grpc_out "${proto_out_dir}"
--go-grpc_opt require_unimplemented_servers=false,paths=source_relative
--plugin protoc-gen-go="${GOBIN}/protoc-gen-go"
--plugin protoc-gen-go-grpc="${GOBIN}/protoc-gen-go-grpc"
--go-grpc_opt=paths=source_relative
--proto_path=../protoc-gen-validate
--proto_path=../api-common-protos
--proto_path=../clutch
--proto_path=../clutch/api
--proto_path=.
job.proto
会产生:
job.pb.go
...
type Jobs struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Job []*v1.Job `protobuf:"bytes,1,rep,name=job,proto3" json:"job,omitempty"`
}
...
查看如何在源代码库中构建原型