Контекст: мы используем монолитную архитектуру репозитория. Это означает, что у нас есть одно большое репозиторий на github со множеством проектов, каждый из которых использует свой собственный стек технологий для пользовательского интерфейса, узла, go и т. Д.
> /home/workspace/
> ./nodejs_project1
> ./reactui_project2
> ./reactnative_ui_project3
> ./go_identity_service_project4
> ./go_graphql_api_project5
> ./go_common (<--- how to share this with other go modules?)
>
> /home/go (GOPATH) - only for 3rd party vendor downloads fro go-get
> ./src
> ./bin
> ./pkg
В go_common у нас есть общий код, используемый во всех проектах go, таких как ведение журнала, подключения к базе данных, наши схемы / модели в виде структур и т. Д. Мы используем Go 1.11 и объявляем модули в go.mod. У нас также есть все это рабочее пространство и проекты ВНЕ нашего GOPATH. Мы не хотим, чтобы какие-либо модули, загруженные поставщиками / сторонними производителями, внутри нашего репо, аналогично тому, как мы .gitignore node_modules в нашем проекте node.js. Итак, go-get загружает модули поставщиков в GOPATH src / pkg, как и ожидалось, и они доступны для импорта в любой проект go.
Однако мы не можем заставить работать импортные ссылки модуля go_common. Мы пробовали выполнить go build и go install в go_common, который создал двоичный файл в GOPATH / bin, но это не помогло сделать его пригодным для ссылки. Есть ли стандартный способ сделать это, особенно теперь, когда Go 1.11 и vgo интегрированы, предполагается, что он не полагается на GOPATH и упростит управление модулями ... ??