go vendor 没有复制依赖问题?

  1. 通过go get 下载了依赖
  2. 通过go mod vendor 将依赖复制到vendor目录下
    问题
    有的依赖在$GOPATH 时存在包的 但是就是没有复制到vendor下
    为什么?
阅读 1k
3 个回答

已解决 不知道为什么会有这个情况
实际看到在$GOPATH下包的名称多了很多后缀
可能是这个影响的
这个时候需要在go.mod添加一个replace 包名 => 包名+vesion (就是require内容复制下)
然后执行go mod vendor即可

你为什么要再进行go mod vendor 操作?go.mod 有这个库吗?,没有肯定不会迁移的

理论上来说是不太可能,来自官方的描述是 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 目录中。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题