Go语言:仅对特定依赖包执行vendor化的问题
仅Vendor特定依赖的解决方案
要实现只对go-z3进行vendor化,同时避免go mod tidy报错,你可以按照以下步骤操作:
步骤1:生成完整的vendor目录(基础准备)
先执行标准vendor命令生成所有依赖的完整结构,为后续调整做准备:
go mod vendor
步骤2:删除不需要vendor的依赖
从vendor/github.com目录下移除你不想vendor的模块(比如golang/glog):
rm -rf vendor/github.com/golang/glog
步骤3:修正vendor/modules.txt文件
编辑vendor/modules.txt,保留go.mod中所有显式依赖的头部行,但仅保留需要vendor的模块的包路径:
修改后的modules.txt示例:
# github.com/golang/glog v1.1.1 ## explicit; go 1.19 # github.com/mitchellh/go-z3 v0.0.0-20191228203228-4cbedeba863f ## explicit github.com/mitchellh/go-z3
- 保留
glog的版本行和## explicit标记,确保与go.mod声明一致,避免校验报错 - 删除
glog对应的包路径行,告知Go该模块未被vendor,会自动从模块缓存或远程仓库获取 - 完整保留
go-z3的条目(版本行、标记、包路径)
步骤4:验证效果
执行go mod tidy,此时不会再出现vendoring不一致的错误:
go mod tidy
操作完成后,项目仅会vendorgo-z3模块,其他依赖(如glog)会通过Go模块机制正常获取,同时满足go-z3文档对vendor化的要求。
内容的提问来源于stack exchange,提问作者diviquery
相关产品推荐
相关产品推荐

