如何使用GOPATH外部的整体回购架构在Go语言的Go 1.11+中共享本地模块

时间:2018-09-22 03:51:42

标签: go gopath vgo go-modules

上下文:我们正在使用整体存储库体系结构。这意味着我们有一个包含大量项目的大型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并使模块管理更容易...

0 个答案:

没有答案