- 通过go get 下载了依赖
- 通过go mod vendor 将依赖复制到vendor目录下
问题
有的依赖在$GOPATH 时存在包的 但是就是没有复制到vendor下
为什么?
理论上来说是不太可能,来自官方的描述是 https://go.dev/ref/mod#go-mod-vendor
The go mod vendor command constructs a directory named vendor in the main module’s root directory that contains copies of all packages needed to support builds and tests of packages in the main module.
简单的说,执行 go mod vendor
命令之后,编译所需所有依赖都会被放到 vendor 目录中。即如果他人 copy 了你的项目(连着这个目录),即使没有下载任何依赖也应该可以编译。
所以,我建议你可以通过 “能否编译” 来验证依赖是否复制完整,而非单独寻找文件是否存在于 vendor 目录中。
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.3k 阅读
2 回答881 阅读✓ 已解决
2 回答2.2k 阅读
1 回答2.1k 阅读
已解决 不知道为什么会有这个情况
实际看到在$GOPATH下包的名称多了很多后缀
可能是这个影响的
这个时候需要在go.mod添加一个replace 包名 => 包名+vesion (就是require内容复制下)
然后执行go mod vendor即可