正确的Golang供应商工具

时间:2019-04-02 13:18:17

标签: dependencies glide-golang

我想让我所有的依赖项以及Go中的项目都受源代码控制。

我可以看到有两个主要的工具(Dep和Glide)。

问题是Dep States在其页面上:

  

dep是“官方实验”。从1.11版本开始,Go工具链具有   (实验上)采用了一种与Dep截然不同的方法。   结果,我们正在继续开发部门,但要做好齿轮工作   主要是为了开发替代原型   工具链中的版本控制行为。

另一方面,“ Glide”似乎没有任何回购活动。

我想知道你们处理这种问题的“最佳”方式是什么?

我真的很喜欢Go及其哲学,但是我必须承认依赖管理确实很麻烦。

2 个答案:

答案 0 :(得分:1)

根据我的经验,我的解决方案是使用go modules来管理依赖项。安装依赖项时,我遇到了dep的一些问题,需要花费很多精力进行修复。所以我切换到模块,它在生产环境中按预期工作。模块是Go 1.11中引入的Go中的内置功能,从Go 1.13开始,模块模式将是所有开发的默认模式。

Go模块使安装依赖项变得更快,更轻松。使用模块,所有依赖项将列在go.mod文件中:

module example.com/hello

require (
    github.com/some/dependency v1.2.3
    github.com/another/dependency/v4 v4.0.0
)

如何获得依赖关系:

go get github.com/some/dependency@v1.2.3

答案 1 :(得分:0)

我不是Golang专家,所以我可能是错的,但是根据golang/go wiki

  

对于任何生产工作负载,请使用dep;如果尚未迁移,请迁移到它。

     

该提案已被接受,vgo已合并到1.11版的Go树中。

     

您将能够使用Go 1.11中的模块工作流程进行实验,因为该版本已包含在实验中。

因此,似乎模块支持目前处于实验模式,在vgo完全集成之前,您应该坚持使用dep来准备任何生产就绪的代码。

请注意,如in this article所述,dep有其自身的一系列问题,主要围绕版本冲突和传递依赖项管理。在将vgo投入生产之前,我的理解是您需要自己解决这些问题。

编辑:添加了有关深度问题的部分。

相关问题