加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang vendor介绍

发布时间:2020-12-16 18:24:11 所属栏目:大数据 来源:网络整理
导读:vendor 简介 vendor是golang的一个包管理器.开启包管理器,需要一个环境变量的支持,且golang sdk 版本必须大于1.5 export GO15VENDOREXPERIMENT=1 这个变量值为1,表示编译时,开启包管理器. 执行go build的时候,会在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读