go vendor目录

Posted thrillerz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go vendor目录相关的知识,希望对你有一定的参考价值。

参考 https://blog.csdn.net/u010649766/article/details/80327035

那么查找依赖包路径的解决方案如下:

  • 当前包下的vendor目录。
  • 向上级目录查找,直到找到src下的vendor目录。
  • 在GOPATH下面查找依赖包。
  • 在GOROOT目录下查找

一些建议

在使用vendor中,给出如下建议:

  • 一个库工程(不包含main的package)不应该在自己的版本控制中存储外部的包在vendor目录中,除非他们有特殊原因并且知道为什么要这么做。
  • 在一个应用中,(包含main的package),建议只有一个vendor目录在代码库一级目录。

上面建议的原因如下:

  • 在目录结构中的每个包的实例,即使是同一个包的同一个版本,都会打到最终的二进制文件中,如果每个人都单独的存储自己的依赖包,会迅速导致生成文件的二进制爆发(binary bloat)
  • 在一个目录的某个pacage类型,并不兼容在同一个package但是在不同目录的类型,即便是同一个版本的package,那意味着loggers,数据库连接,和其他共享的实例都没法工作。

以上是关于go vendor目录的主要内容,如果未能解决你的问题,请参考以下文章

Go包管理工具Vendor使用

go mod 生成 vendor

关于go1.6使用vendor的坑

go vendor的用法

golang vendor

Go外部依赖包从vendor$GOPATH和$GOPATH/pkg/mod下的查找顺序