Go mod + grpc: импорт proto3 внешней библиотеки
В Go не так давно (с декабря 2021), практически язык для меня новый.
Описание проблемы:
- Создается grpc сервис на Go с использованием proto3 и с применением go mod зависимостей.
- В сервисе используется своя, но внешняя библиотека со своим описанием proto messages, и они нужны как вложенные описания сообщений этого сервиса.
- Библиотека подключается через go mod, тут проблем нет. Код, который маппит части библиотечных сообщений через методы мапперов библиотеки также проблем не вызывает. Код, который маппит в сервисе по своему - также видит компилированный и встроенный в библиотеку *.pb.go и работает.
- Но, при генерации proto для самого сервиса, компилятор protoc НЕ находит файл описаний из библиотеки, при стандартной компиляции. "Файл не найден".
- Если ему указать так:
-I
go list -m -f '{{ .Dir }}' gitlab.myrepos.ru/extLibrary, то он видит библиотеку, но после компиляции вижу в результате (myService.pb.go) это:
import api "api", что понятно, вызывает ошибку.
Причина понятна: protoc ничего не знает (и это правильно) о структуре зависимостей go mod
Как вообще в Go работать с внешним файлом .proto правильно?