如何为多个Go项目组织代码?

时间:2018-10-04 20:14:39

标签: go

因此,我有一些用Go编写的Web服务,并且我打算再写一些。这些服务全部位于GOPATH之外的自己的文件夹中,并使用Glide和Dep来管理供应商的依赖项(我打算在不久的将来转换为Go 1.11模块)。

我遇到的问题是这些服务中有很多代码重复,使事情变得脆弱。特别是与数据库结构和访问有关的代码。我想将所有数据库访问和其他服务特定的代码移到某个位置的共享位置,然后根据需要将其导入服务。

正确的做法是什么?我一直在尝试不同的项目结构,但是我总是遇到两个问题之一。

如果使用Go 1.11模块,则最终必须在所有服务之间共享go.mod和go.sum。由于每个服务构建都必须从同一位置的所有服务中获取所有依赖关系,因此这会延长单个服务的构建过程。随着服务数量的增加,这个问题将变得更加严重。

如果我将GOPATH设置为使服务代码最终存储在内部,则会遇到多个问题。这些服务是用不同语言编写的较大项目的一部分,并且是该项目的版本控制存储库的一部分。目前的结构是

- project
    - services
        - svc1
        - svc2
    - othercode
    - morecode

如果我将GOPATH设置为服务,则必须将各个服务目录移动到单独的src下,最终会得到额外的pkg和bin目录,而我想安装的每个Go软件包都将存放在〜/ project /中。服务树也是如此。我宁愿继续使用供应商依赖性。

如何组织代码,以免出现上述两种情况,仍然能够从多个服务中导入共享代码?

0 个答案:

没有答案