go vendor 机制讲解
vendor 机制
vendor 是 go 1.5 以后支持的,1.6 默认开启,可以关闭则直接 在GOPATH下面查找依赖包
vendor 编译原则
vendor 原则:
- 当前包下有vendor目录,则从其下查找第三方的包,如果没有找到,则继续执行下一步操作
- 当前包目录下没有vendor目录,则沿当前包目录向上逐级目录查找vendor目录, ,直到找到 $GOPATH/src下的vendor目录
- go 1.12 以后,也默认开启 go mod, 那么如果 vendor目录没找到是不会去 GOPATH 寻找,则尝试 go get 如果失败则编译失败
- go 1.12 以前,在GOPATH下面查找依赖包
- 在GOROOT目录下面查找依赖包
故兼容的情况下,请使用 GOPATH 保证不出错,兼容 GOPATH 和 go mod 请设置环境变量 GO111MODULE=“on”