当前位置: 首页 > 面试题库 >

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

卓星波
2023-03-14
问题内容

在其中,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模块中,我看不到这样的选择吗?这使我认为唯一的解决方案是将import更改为github.com/kubermatic/glog- logrus

谢谢!


问题答案:

这就是replace指令的目的。

引用Wiki Go
1.11模块:我何时应该使用replace指令?

replace指令允许您提供另一个导入路径,该路径可能是VCS(GitHub或其他地方)中的另一个模块,或者是具有相对或绝对文件路径的本地文件系统上的另一个模块。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/gloggithub.com/kubermatic/glog- logrus将被使用(无需更改导入语句)。



 类似资料:
  • 上面的匕首2.0当量是多少? 您可以在GitHub上看到我的项目及其单元测试。

  • 问题内容: 我想使用NPM软件包。它具有各种依赖性。依赖图的一部分如下所示: 不幸的是,此版本中存在一个错误,导致该错误无法在Mac OS X上正确安装。此问题已在最新版本中修复。 如何获得更新版本的? 一些其他上下文: 明确要求版本为,明确要求版本为。 首先添加到我程序包的依赖项没有任何作用;这两个版本均已安装,并且仍使用旧版本 问题答案: 您可以使用npm收缩包装功能,以覆盖任何依赖性或子依赖

  • 问题内容: 如果我的包裹有这些依赖 而包有这些依赖 的最新版本是,的第一次运行将安装在。 如何强制纱线将其用于包装? 我的理解是,使用可以做到这一点。 我的问题的摘要可能是:纱线创建可重复的确定性安装,但是如何自定义该安装? 问题答案: 如果实际上您确实对要接受的版本具有过分的限制,则 可以 使用yarn覆盖它们。 更新编辑: 从1.0开始,Yarn现在正式支持 “ resolutions”块。因

  • 我有这样配置的父pom: 我的孩子波姆: 我想在我的类路径中使用4.3.5版本,因为目前我收到错误消息,不应修改父版本: 任何想法如何防止覆盖4.2.9版本?

  • 我正在使用GoogleFirebase(身份验证和云firestore)开发一个应用程序。根据文档,我应该将以下依赖项添加到我的应用程序级构建中。gradle文件以访问cloud firestore数据库 但是,这种方法在编译时会产生以下错误: "注释处理器现在必须显式声明。发现编译类路径上的以下依赖项包含注释处理器。请将它们添加到注释处理器配置。-auto-value-1.4.jar(com.g

  • 我有一些代码如下所示: 有没有办法从ScalaTest中模拟/存根,就像使用nodejs的proxyquire一样? 我读到我可以使用依赖注入,但我宁愿不这样做 我唯一的选择是传递我的lib作为类参数吗? 有什么建议可以让它更容易测试吗?谢啦 编辑: 泽维尔·吉奥特的回答是这个问题的一个有趣的方法,但是我选择改变代码来进行测试。 我将作为参数传递,并使用mockito进行模拟,这使代码比隐藏范围更