我想让我所有的依赖项以及Go中的项目都受源代码控制。
我可以看到有两个主要的工具(Dep和Glide)。
问题是Dep States在其页面上:
dep是“官方实验”。从1.11版本开始,Go工具链具有 (实验上)采用了一种与Dep截然不同的方法。 结果,我们正在继续开发部门,但要做好齿轮工作 主要是为了开发替代原型 工具链中的版本控制行为。
另一方面,“ Glide”似乎没有任何回购活动。
我想知道你们处理这种问题的“最佳”方式是什么?
我真的很喜欢Go及其哲学,但是我必须承认依赖管理确实很麻烦。
答案 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投入生产之前,我的理解是您需要自己解决这些问题。
编辑:添加了有关深度问题的部分。