golang vendor介绍

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

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部