如何在“ GoLang”中使用“本地”模块

时间:2019-02-15 06:22:51

标签: go

我正在使用“微服务”架构来构建应用程序。 这意味着我有不同的应用程序。 事实是,某些逻辑位于“共享”库中。

请参阅以下目录结构:

ROOT/
├── Service 1/
│   ├── src
│   ├──── app.go
├── Service 2/
│   ├── src
│   ├──── app.go
└── Lib/
    ├── Lib 1
    │   ├── src
    │   ├──── app.go

服务1 服务2 库1 均使用go mod命令初始化。

对于服务1 ,这将导致一个go.mod文件,其内容如下。

module github.com/kevin-de-coninck/datalytics/services/serviceOne

对于服务2 ,这将导致一个go.mod文件,其内容如下。

module github.com/kevin-de-coninck/datalytics/services/serviceTwo

对于库1 ,这将导致一个go.mod文件,其内容如下。

module github.com/kevin-de-coninck/datalytics/lib/libOne

服务1 import语句包含对库1

的引用
import (
    "github.com/kevin-de-coninck/datalytics/lib/libOne"
)

但是,当我尝试构建应用程序时,显示以下输出:

go: finding github.com/kevin-de-coninck/datalytics/lib/libOne latest
go: finding github.com/kevin-de-coninck/datalytics/lib latest
go: finding github.com/kevin-de-coninck/datalytics latest
build github.com/kevin-de-coninck/datalytics/services/serviceOne/src: 
cannot find module for path github.com/kevin-de-coninck/datalytics/lib/libOne

如何解决此问题,以便我可以使用我的 LibOne 程序包而不将其公开或在所有服务中复制它?

亲切的问候

1 个答案:

答案 0 :(得分:0)

经过一番摆弄,我找到了答案。 似乎“ go.mod”和“ go.sum”文件应该放在“ src”目录中。 之后,可以构建并执行该应用程序。