0

我希望将我的所有依赖项与我在 Go 中的项目一起置于源代码控制之下。

我可以看到有两个主要工具可以完成这项工作( Dep 和 Glide )。

问题是其页面上的 Dep States :

dep 是“官方实验”。从 1.11 开始,Go 工具链(实验性地)采用了一种与 dep 大相径庭的方法。因此,我们正在继续开发 dep,但主要致力于开发用于工具链中版本控制行为的替代原型。

另一方面,Glide 似乎在其回购中没有任何活动。

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

我真的很喜欢 Go 和它的哲学,但我必须承认依赖管理真的很混乱。

4

2 回答 2

1

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

对于任何生产工作负载,请使用 dep,或者如果您还没有这样做,请迁移到它。

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

您将能够试验 Go 1.11 中的模块工作流程,因为它作为实验包含在此版本中。

所以看起来模块支持目前处于实验模式,你应该坚持使用 dep 来获取任何生产就绪代码,直到 vgo 完全集成。

请注意,如本文所述,dep 有其自身的一系列问题,主要围绕版本冲突和传递依赖管理。在 vgo 被认为可以生产之前,我的理解是您需要自己处理这些问题。

编辑:添加了关于 dep 问题的部分。

于 2019-04-02T13:31:48.207 回答
1

根据我的经验,我的解决方案是使用go 模块来管理依赖项。我在安装依赖项时遇到了一些 dep 问题,我花了很多精力来修复它。所以我切换到 go 模块,它在生产环境中按预期工作。模块是 Go 中的一个内置特性,在 Go 1.11 中引入,从 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
于 2019-07-17T02:40:10.823 回答