1

上下文:我们使用的是单体存储库架构。这意味着我们有一个包含许多项目的大型 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 之外也有整个工作区和项目。我们不希望任何供应商/第 3 方在我们的 repo 中下载模块,类似于我们在 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 并使模块管理更容易...... ??

4

0 回答 0