新的 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
来获取我自己的版本,同时等待上游版本接受(或不接受)我的补丁。
- 2 回答
- 0 关注
- 140 浏览
添加回答
举报
0/150
提交
取消