proto3 -> 使用自定义扩展,导致在 go 代码中导入包 ("google/protobuf")

proto3 -> go with custom extensions resulting in imports to package ("google/protobuf") in go code

我正在 proto3 之上制作元模型原型。生成特定领域的样板文件,因为 go proto3 扩展语法的表现力非常可笑。我的域原型文件依赖于包含扩展名的 meta.proto

我可以编译这些去。当包含 meta.proto 文件时,生成的 go 以以下包含块结束:

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import google_protobuf "google/protobuf" <--- this import does not exist !!

我的扩展文件具有以下结构(based off this):

syntax = "proto2";
package "...";

option go_package = "..."; 

import "google/protobuf/descriptor.proto"; <--- this causes the import

// message MyExtensionClass ...
// message MyExtensionField ...

extend google.protobuf.MessageOptions {
    optional MyExtensionClass class = 50000;
}

extend google.protobuf.FieldOptions {
    optional MyExtensionField field = 50001;
}

我知道解决方案可能非常简单,google/protobuf include 用于生成 C++。


在我的工作区中,包含的包应该是 "github.com/golang/protobuf/protoc-gen-go/descriptor"

可怜的人的解决方案。不太理想,指向相关的go import工程:

sed -i '' -e 's/import google_protobuf \"google\/protobuf\"/import google_protobuf \"github.com\/golang\/protobuf\/protoc-gen-go\/descriptor\"/g' pkg/domain/proto/extensions/*.pb.go