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

新的 Go 版本 1.11 引入了很棒的模块概念。

文档中它说有四个指令可以在一个go.mod文件中使用:modulerequireexcludereplace.

它还解释说:

exclude 和 replace 指令仅在当前(“主”)模块上运行。构建主模块时,将忽略除主模块之外的模块中的排除和替换指令。因此,replace 和 exclude 语句允许主模块完全控制自己的构建,而无需完全控制依赖项。

但我仍然不明白该exclude指令是如何工作的。

有人可以向我解释该exclude指令是如何工作的吗?如果可能的话,请举例说明何时使用它?


慕斯709654
浏览 141回答 2
2回答

阿晨1998

这是一个半假设的假设示例:go.modmodule github.com/example/projectrequire (    github.com/SermoDigital/jose v0.0.0-20180104203859-803625baeddc    github.com/google/uuid v1.1.0)exclude github.com/SermoDigital/jose v0.9.1replace 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来获取我自己的版本,同时等待上游版本接受(或不接受)我的补丁。

临摹微笑

阅读整个模块文档。在您的报价文件的下方,...构建中的顶级模块可以排除特定版本的依赖项或用不同的代码替换其他模块。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go