protoc генерирует код golang из двух прото-файлов, принадлежащих разным пакетам.

У меня есть два файла proto src в одной папке, скажем:

1-й - foo.proto

syntax = "proto3";
package foo;

второй - bar.proto, которому нужно импортировать foo.proto

syntax = "proto3";
import "foo.proto";
package bar;

вы можете видеть, что у них разные имена пакетов, когда я использую protoc для их генерации один за другим (foo.proto в качестве первой причины), у меня сгенерированы два файла golang, но я должен поместить их в 2 каталога (вы можете не помещать файл с другим именем пакета в один и тот же каталог, golang)

foo/foo.pb.go
bar/bar.pb.go

но внутри bar.pb.go импорт использует локальный путь импорта, который похож на

import foo "."

Я настраиваю несколько вариантов, которые предоставляет протокол, но не работает, какие-либо предложения?


person rmrf100    schedule 22.06.2017    source источник
comment
Ваши файлы .proto расположены рядом друг с другом? Вы пробовали расположить папки таким образом, чтобы пути к протоколу выглядели так же, как пути, по которым вы хотите выйти? Итак: proto bar / bar.proto с import foo / foo.proto?   -  person Marc Gravell    schedule 22.06.2017
comment
обычно проще всего поместить все прото-файлы в их собственные папки protos/foo.proto, protos/bar.proto, а затем скомпилировать. Затем выходные .pb.go можно переместить в нужный вам пакет.   -  person RickyA    schedule 22.06.2017
comment
все эти прото-файлы расположены в одной папке (с другим пакетом), к сожалению, я не могу это изменить - код других команд, они используют JAVA с настройкой pom.xml, похоже, у него нет такой проблемы.   -  person rmrf100    schedule 22.06.2017
comment
если я могу добавить option go_package в прототип файла, это исправит, но, к сожалению, я не могу изменить исходный файл прототипа. и кажется, import_prefix в этом случае работает не так, как я ожидал.   -  person rmrf100    schedule 22.06.2017


Ответы (1)


Я считаю, что добавление option go_package должно быть правильным решением

person rmrf100    schedule 22.06.2017