如何覆盖go模块中的依赖项?

时间:2019-07-30 07:01:09

标签: go dependency-management go-modules

dep中,您可以选择覆盖依赖项,并使其指向其他存储库,例如,在以下https://github.com/kubermatic/glog-logrus库中,您需要向Gopkg.toml文件中添加以下行:

[[override]]
  name = "github.com/golang/glog"
  source = "github.com/kubermatic/glog-logrus"

然后在代码库中import "github.com/golang/glog。但是,在go模块中,我看不到这样的选择吗?这使我认为唯一的解决方案是将导入更改为github.com/kubermatic/glog-logrus

谢谢!

1 个答案:

答案 0 :(得分:3)

这是false指令的作用。

从Wiki Go 1.11 Modules: When should I use the replace directive?引用

  

replace指令允许您提供另一个导入路径,该路径可能是位于VCS(GitHub或其他地方)中或本地文件系统上具有相对或绝对文件路径的另一个模块。使用replace指令中的新导入路径,而无需更新实际源代码中的导入路径。

因此,将其添加到主模块的replace文件中:

go.mod

您还可以指示replace ( github.com/golang/glog => github.com/kubermatic/glog-logrus v0.0.0 ) 工具为您进行此修改:

go

(使用您感兴趣的版本。)

此后,当您导入go mod edit -replace github.com/golang/glog=github.com/kubermatic/glog-logrus@v0.0.0 时,将使用github.com/golang/glog(无需更改导入语句)。