微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

golang vendor介绍

vendor 简介

vendor是golang的一个包管理器.开启包管理器,需要一个环境变量的支持,且golang sdk 版本必须大于1.5

export GO15vendOREXPERIMENT=1

  1. 这个变量值为1,表示编译时,开启包管理器.
  2. 执行go build的时候,会在vendor目录下边寻找你引用的外部包.
  3. 可以将需要的外部包放到vendor目录中.这样每次编译的时候,当外部包修改,测试通过后,将新的外部包内容替换到vendor中,不断的迭代更新,以免测试包影响到依赖他的程序的正常运行.

示例结构

假设GOPATH=/opt/go 下边有如下几个目录

opt
|----go 
|--------bin 
|--------src 
|------------github.com
|----------------platform
|--------------------logs
|--------------------dbobj
|--------------------utils
|--------------------main.go
|----------------vendor
|--------------------jwthi
|--------------------routepa
|---------pkg
  1. platform中的包编译过程中,如果引用到了外部包jwthi和routepa,则会在vendor中查找,如果找不到则报错,如果找的到则正常编译.
  2. jwthi与routepa一定要是全路径名称,如果应用的是github.com/jwthi.那么vendor页需要先创建github.com,在github.com下创建jwthi.以此类推.

注意事项:

  1. vendor只能在package中存在.不能超越这个范围.如上边的示例中,vendor目录在github.com中存在,不能直接在src中与github.com平级.原因是:vendor必须在package中.github.com就是一个最顶层的包.
  2. vendor可以嵌套使用.就是在你引入的包中,也可能存在vendor目录.使用vendor方式,打包外部依赖,是一个很不错的包发布方式.
  3. 通过vendor将包的版本保存下来,有助于降低包版本不一致导致的”误会”. go get认情况下,会去下载最新的包.如果api发生的变化,则就可能产生误会.

一个工具,可以辅助的帮助我们进行vendor管理

go get -u -v github.com/kardianos/govendor

  1. 这个工具,可以帮助我们初始化vendor信息.他会创建一个vendor.json的文件.辅助我们管理引用包.
  2. 这个工具的使用,请参考baidu,google
  3. 没有这个工具,也可以正常的使用vendor包管理器,只要GO15vendOREXPERIMENT=1即可.手动的将应用包拷贝到vendor目录中.如果使用工具,可以自动的对包进行拷贝.个人感觉,自己动手丰衣足食.
附录

以上内容,纯属个人愚见,如果不对的地方,请及时拍砖,以免误人子弟.诚邀指点.

E-mail:hzwy23@163.com

原文地址:https://www.jb51.cc/go/189204.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐