
大家好,我是Tony Bai。
欢迎来到我们的专栏 《Go 模块构建与依赖管理: 从入门到精通》的第六讲。
在上一讲中,我们体验了 Go 模块正常的“生老病死”——从 v1 的诞生,到 v2 的演进。这套工作流,处理的是理想世界中的情况。但在真实、复杂的软件工程世界里,我们总会遇到各种“意外”:
一个你依赖的库,突然发现了一个严重 Bug,但作者还没来得及发布修复版本,你的项目却等不了,怎么办?
你的项目依赖了 A 和 B 两个库,不幸的是,A 依赖的 C 库
v1.2.0版本,与 B 依赖的 C 库v1.3.0版本,竟然存在某种微妙的冲突,而 MVS 算法恰好选择了那个有问题的版本,怎么办?作为模块作者,你不小心发布了一个有严重安全漏洞的版本,你希望能“召回”它,并警告所有用户不要使用,怎么办?
面对这些“疑难杂症”,Go Modules 为我们提供了三把功能强大的“手术刀”:replace, exclude, retract。
它们非常强大,但也非常危险。如果使用不当,它们可能会破坏 Go Modules 的可复现构建原则,给团队协作带来混乱。
今天,我们将再次扮演作者小 G 和使用者小 M,在一次次具体的“紧急救援”中,学会如何精准、安全地使用这三把“手术刀”。

Go模块依赖管理三利器

被折叠的 条评论
为什么被折叠?



