dep指定版本 go_Golang官方依赖管理工具:dep

在这里声明一下,百度或者google看到的godep不是我这篇博文说的dep,那它们是什么关系呢?按照Peter Bourgon博文来说,它们的作者都有相同的人,但是一个是dep是官方版本,godep是第三方工具。

我今天介绍的是dep,之前也有介绍过glide,有兴趣的可以到Golang依赖管理工具:glide从入门到精通使用看看。 现在还有一个疑问是为什么官方现在要支持依赖管理了呢?我个人认为有如下原因(勿喷,如果不同或者遗漏欢迎留言补充):第三方依赖管理很多,虽然很好用,但是很少可以兼容的,结果--乱;

官方的包管理为了增加社区的凝聚力,保持Go开箱即用的简单特性,不需要大家再安装各种第三方工具了,而且第三方工具都会过来兼容官方版的;

还有一个官话,为了go更好的发展;

dep的FAQ中有一段描述dep和go get 的网址,也是侧面说了依赖管理工具和go get关系, 一句话概括:依赖管理工具是为应用管理代码的,go get是为GOPATH管理代码的。

下面进入教程。

介绍

dep是一个原型依赖管理工具,需要在Go 1.7及更高的版本中使用,说明第三方工具近期还是有市场的。

PS:本博客的dep基于v0.3。

安装

环境准备。//设置环境变量 使用vendor目录GO15VENDOREXPERIMENT=1

安装dep

等到dep正式集成到Golang中时候,也许是Golang 1.10 ,广大吃瓜群众就可以直接使用go dep命令。现在还是需要自己安装的。$ go get -u github.com/golang/dep/cmd/dep

验证安装$ depdep is a tool for managing dependencies for Go projectsUsage: dep Commands:  init    Initialize a new project with manifest and lock files  status  Report the status of the project's dependencies  ensure  Ensure a dependency is safely vendored in the project  prune   Prune the vendor tree of unused packagesExamples:  dep init                               set up a new project  dep ensure                             install the project's dependencies  dep ensure -update                     update the locked versions of all dependencies  dep ensure -add github.com/pkg/errors  add a dependency to the projectUse "dep help [command]" for more information about a command.

有一个很重要的选项ensure中文含义是确保;保证;担保,作者想传达的意思是确保所有本地状态-代码树、清单、锁和供应商彼此同步。

看到这个说明已经安装好了。

使用

老规矩,篇幅有限,我只介绍经常使用到的。 先进入在GOPATH的一个项目中。cd $GOPATH/src/foordep

初始化(dep init)$ cd foordep/$ dep init$ lltotal 12-rw-rw-r-- 1 qiangmzsx qiangmzsx  286 Aug  7 11:45 Gopkg.lock-rw-rw-r-- 1 qiangmzsx qiangmzsx  535 Aug  7 11:45 Gopkg.tomldrwxrwxr-x 2 qiangmzsx qiangmzsx 4096 Aug  7 11:45 vendor

大家发现了,应用foordep目录下出现了两个文件(Gopkg.lock、Gopkg.toml)和一个目录(vendor)。 它们是什么关系呢?

所以出现Gopkg.toml and Gopkg.lock are out of sync.时候最好执行一下dep ensure。

下面看看它们的内容。$ cat Gopkg.lock # This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.[solve-meta]  analyzer-name = "dep"  analyzer-version = 1  inputs-digest = "ab4fef131ee828e96ba67d31a7d690bd5f2f42040c6766b1b12fe856f87e0ff7"  solver-name = "gps-cdcl"  solver-version = 1$ cat Gopkg.toml # Gopkg.toml example## Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md# for detailed Gopkg.toml documentation.## required = ["github.com/user/thing/cmd/thing"]# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]## `constraint`#   name = "github.com/user/project"#   version = "1.0.0"## `constraint`#   name = "github.com/user/project2"#   branch = "dev"#   source = "github.com/myfork/project2"## `override`#  name = "github.com/x/y"#  version = "2.4.0"

dep ensure

我们写一个Gopkg.toml看看效果。# 必需包required = ["github.com/astaxie/beego"]# 忽略包ignored = ["golang.org/x/crypto"]# 项目元数据[metadata]homepage = "https://github.com/qiangmzsx"license = "MIT"owners_name_1 = "qiangmzsx"owners_email_1 = "qiangmzsx@hotmail.com"owners_homepage_1 = "https://github.com/qiangmzsx"# 约束条件`constraint`  name = "github.com/astaxie/beego"  # 可选:版本  version = "=1.8.0"  # 分支  #branc

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值