为了账号安全,请及时绑定邮箱和手机立即绑定

exclude 指令如何在 go.mod 文件中工作?

exclude 指令如何在 go.mod 文件中工作?

Go
慕斯709654 2023-05-15 09:48:26
新的 Go 版本 1.11 引入了很棒的模块概念。在文档中它说有四个指令可以在一个go.mod文件中使用:module, require, exclude, replace.它还解释说:exclude 和 replace 指令仅在当前(“主”)模块上运行。构建主模块时,将忽略除主模块之外的模块中的排除和替换指令。因此,replace 和 exclude 语句允许主模块完全控制自己的构建,而无需完全控制依赖项。但我仍然不明白该exclude指令是如何工作的。有人可以向我解释该exclude指令是如何工作的吗?如果可能的话,请举例说明何时使用它?
查看完整描述

2 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

这是一个半假设的假设示例:


go.mod

module github.com/example/project


require (

    github.com/SermoDigital/jose v0.0.0-20180104203859-803625baeddc

    github.com/google/uuid v1.1.0

)


exclude github.com/SermoDigital/jose v0.9.1


replace github.com/google/uuid v1.1.0 => git.coolaj86.com/coolaj86/uuid.go v1.1.1

排除

对于包github.com/SermoDigital/jose,它有一个正确的 git 标签v0.9.1,但当前版本是v1.1,这不是一个正确的 git 标签(缺少“补丁”版本)。

通过排除版本正确(但不工作)的代码,它会导致从中获取 go mod master(版本不正确,但具有工作代码)。

代替

同样(并且确实是假设的),如果我有一个补丁github.com/google/uuid,我可以创建一个分支并使用它replace来获取我自己的版本,同时等待上游版本接受(或不接受)我的补丁。


查看完整回答
反对 回复 2023-05-15
?
临摹微笑

TA贡献1982条经验 获得超2个赞

阅读整个模块文档。在您的报价文件的下方,

...构建中的顶级模块可以排除特定版本的依赖项或用不同的代码替换其他模块。


查看完整回答
反对 回复 2023-05-15
  • 2 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信