上下文:我们正在使用整体存储库体系结构。这意味着我们有一个包含大量项目的大型github存储库,每个项目针对ui,node,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之外进行项目开发。我们不希望任何供应商/第三方在我们的仓库中下载模块,类似于我们在node.js项目中.gitignore node_modules的方式。因此,go-get按预期将供应商模块下载到GOPATH src / pkg,并且可以将其导入任何go项目中。
但是,我们无法使导入引用go_common的模块正常工作。我们尝试在go_common中进行go build和go install,这在GOPATH / bin中创建了一个二进制文件,但是实际上并没有使其可引用。有没有一种标准的方法来执行此操作,尤其是现在,假设Go 1.11和vgo集成不依赖GOPATH并使模块管理更容易...