Как открыть локальный модуль в Go 1.11+ для Golang, используя монолитную архитектуру репо вне GOPATH
Контекст: мы используем монолитную архитектуру хранилища. Это означает, что у нас есть одно большое репозиторий github со многими проектами, каждый из которых использует свой собственный технический стек для пользовательского интерфейса, узла, го и т. Д.
> /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. У нас также есть все это рабочее пространство и проекты вне нашей ГОПАТЫ. Мы не хотим, чтобы внутри нашего репозитория были загружены какие-либо вендоры / сторонние модули, подобно тому, как мы используем.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 и облегчить управление модулями...??