golang调用服务器信息,golang包管理工具之govendor的使用-Go语言中文社区

1、govendor简介

golang工程的依赖包经常使用go get命令来获取,例如:go get github.com/kardianos/govendor ,会将依赖包下载到GOPATH的路径下。常用的依赖包管理工具有godep,govendor等,在Golang1.5之后,Go提供了 GO15VENDOREXPERIMENT 环境变量(Go 1.6版本默认开启该环境变量),用于将go build时的应用路径搜索调整成为 当前项目目录/vendor 目录方式。通过这种形式,我们可以实现类似于 godep 方式的项目依赖管理。

2、使用步骤

2.1. 安装

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

2.2. 使用

#进入到项目目录

cd /home/gopath/src/myproject

#初始化vendor目录

govendor init

#查看vendor目录

[root@CC32225A myproject]# ls

commands main.go vendor myproject_test.sh

#将GOPATH中本工程使用到的依赖包自动移动到vendor目录中

#说明:如果本地GOPATH没有依赖包,先go get相应的依赖包

govendor add +external

或使用缩写: govendor add +e

#Go 1.6以上版本默认开启 GO15VENDOREXPERIMENT 环境变量,可忽略该步骤。

#通过设置环境变量 GO15VENDOREXPERIMENT=1 使用vendor文件夹构建文件。

#可以选择 export GO15VENDOREXPERIMENT=1 或 GO15VENDOREXPERIMENT=1 go build 执行编译

export GO15VENDOREXPERIMENT=1

此时看到的vendor.json文件就比之前多了许多,例如:

{

"comment": "",

"ignore": "test",

"package": [

{

"checksumSHA1": "aQFLbMaXYrtdgLlR2m+DaZwz4WM=",

"path": "github.com/Lofanmi/pinyin-golang/pinyin",

"revision": "30cdbfc8c2de3b2efb359b8d95631229eec88ffb",

"revisionTime": "2018-08-08T03:00:53Z"

},

{

"checksumSHA1": "PLYRsSaqhSKrGIuxWkV+B9uMUL8=",

"path": "github.com/alecthomas/log4go",

"revision": ""

},

{

"checksumSHA1": "a9Sq/X9bS1l5EA7KfRmtw4lMedY=",

"path": "github.com/astaxie/beego",

"revision": ""

},

{

"checksumSHA1": "zgHK1vxUJDZTXAPCw+Bls7St0Ks=",

"path": "github.com/astaxie/beego/config",

"revision": ""

},

....

{

"checksumSHA1": "REkmyB368pIiip76LiqMLspgCRk=",

"path": "golang.org/x/sys/cpu",

"revision": "ec910dc1c36d683f77d2db63b82474261f0ac140",

"revisionTime": "2018-09-10T02:23:21Z"

},

{

"checksumSHA1": "gq+MtaxaV8I0Nl19Vdvy4yhRJOE=",

"path": "golang.org/x/sys/unix",

"revision": "ec910dc1c36d683f77d2db63b82474261f0ac140",

"revisionTime": "2018-09-10T02:23:21Z"

},

{

"checksumSHA1": "Y7nctMxT58lRM78VtElPerhcnEs=",

"path": "golang.org/x/sys/windows",

"revision": "ec910dc1c36d683f77d2db63b82474261f0ac140",

"revisionTime": "2018-09-10T02:23:21Z"

},

{

"checksumSHA1": "i3wCya26lOLhEfq0EyzriGrQ35s=",

"path": "golang.org/x/time/rate",

"revision": "ec910dc1c36d683f77d2db63b82474261f0ac140",

"revisionTime": "2018-09-10T02:23:21Z"

},

{

"checksumSHA1": "oQQwx8g3cICuxaXaogTf1nr027E=",

"path": "gopkg.in/asn1-ber.v1",

"revision": "379148ca0225df7a432012b8df0355c2a2063ac0",

"revisionTime": "2017-05-11T16:59:59Z"

},

{

"checksumSHA1": "BYJlm+iDc2MDCVUy6eITxw3IeOU=",

"path": "gopkg.in/gomail.v2",

"revision": "81ebce5c23dfd25c6c67194b37d3dd3f338c98b1",

"revisionTime": "2016-04-11T21:29:32Z"

},

{

"checksumSHA1": "ZxVlaB3g5rPylGFPXk0id4j4R10=",

"path": "gree/common/security",

"revision": ""

}

],

"rootPath": "myproject"

}

2.3.其他常用命令

govendor list可以快速查看你项目中的外部依赖包。例如:

v  github.com/astaxie/beego

v  github.com/astaxie/beego/cache

v  github.com/astaxie/beego/cache/redis

v  github.com/astaxie/beego/config

v  github.com/astaxie/beego/context

v  github.com/astaxie/beego/context/param

v  github.com/astaxie/beego/grace

l  benben-project/router

l  benben-project/config

l  benben-project/controllers

l  benben-project/log

l  benben-project/models

其中最左边的是描述包的状态,右边是你工程的依赖包

govendor add添加依赖包到vendor目录下,在使用 govendor add命令时,后面需要跟上下面介绍的一些状态,也可以直接跟上缺失包的地址,如下文常见错误中的做法。

govendor update从你的GOPAHT中更新你工程的依赖包

govendor remove从你工程下的vendor文件中移除对应的包

govendor fetch添加或者更新vendor文件夹中的包

govendor使用状态来指定包

16672d8df71e821b295480e1e2a92697.png

其中有一些状态存在简写,例如:+std可以用+s表示,+external可以用+ext或者+e表示,+external可以用+exc或者+x表示。

在使用时,你也可以对这些状态进行逻辑组合,例如:

+local,grogram表示既满足+local又满足+program。

+local +vendor表示只要满足两者之一。

+vendor,program +std表示vendor和program是与的关系,整体和std是或的关系

+vendor,^program表示满足vendor,但却不满足program。

3.常见错误

1. 服务器提示某个依赖包没有找到

原因可能是vendor文件中没有该包或者vendor.json文件中没有该包的描述信息。假设"github.com/astaxie/beego/logs"包的信息在vendor.json文件中没有找到,则在go命令行中执行govendor add github.com/astaxie/beego/logs。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值