dep指定版本 go_Go 包管理工具-dep

本文介绍了Go语言的依赖管理工具dep的安装、使用方法,包括如何初始化项目、查看依赖状态、同步依赖及添加指定版本的依赖。dep通过Gopkg.toml和Gopkg.lock文件管理项目依赖,并将源代码存储在vendor目录,帮助锁定版本,避免第三方包升级带来的不兼容问题。
摘要由CSDN通过智能技术生成

dep 是一个 golang 依赖管理工具,需要在 Go 1.7 及更高的版本中使用。

1. 安装

安装 dep 工具的方式有很多种,如果是 mac 电脑的话,只需要如下命令:

brew install dep

对于 Linux 和类 Unix 系统而言,我们还可以使用如下方式安装 dep:

curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh

或者直接使用源码安装。

而对于 windows 电脑,可以使用命令行:

go get -u github.com/golang/dep/cmd/dep

会自动下载到 go_path/bin/目录下,你需要将 go_path/bin 加入到环境变量中。

如果这种方式下载不下来,你也可以手动下载:

2. 使用

安装完毕再命令行下敲入 dep 命令:

$ dep

Dep is a tool for managing dependencies for Go projects

Usage: "dep [command]"

Commands:

init Set up a new Go project, or migrate an existing one

status Report the status of the project's dependencies

ensure Ensure a dependency is safely vendored in the project

prune Pruning is now performed automatically by dep ensure.

version Show the dep version information

Examples:

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 project

Use "dep help [command]" for more information about a command.

如上:

init 命令用来初始化项目;

status 命令用来查看当前项目的依赖状态;

ensure 命令用来同步依赖包

3. 初始化

切换到你的工程目录下:

cd $GOPATH/src/goProject

假设项目现在是空的,什么也没有,进行初始化:

dep init -v

注意:因为墙的原因,,,不一定我们能成功的拉下来依赖,使用 dep init 尽量带上-v:

-v enable verbose logging (default: false)

如果半分钟没响应就 ctrl+c 中断,就可以看到 fail 的原因,dep 遇到一些错误不会立马报错(特别是网络原因) 。

执行成功之后会生成两个文件 Gopkg.lock、Gopkg.toml 和一个文件夹 vendor

Gopkg.toml 文件记录着 current project 依赖项 project 的约束。

Gopkg.toml 参数解释:

[[constraint]]: 这个约束主要体现在到底要采用目标 project 的某个 tag 的版本(version),还是某个 branch,或者是某个 revision,这三个对于一个 constraint 只能选一个。

[[override]]:有时项目依赖比较复杂,经常会遇到依赖冲突导致 dep ensure 命令无法执行成功,这个时候使用 override 消除单个依赖关系上多个不可调和的 constraint 声明之间的分歧

[[required]]:列出了必须包含在 Gopkg.lock 中的一组包

[[ignored]]:列出 dep 静态分析源代码时忽略的一组包

[[prune]]:prune 为依赖关系定义全局和每个项目的 prune 选项。 这些选项决定写入 vendor/时丢弃哪些文件unused-packages:修剪掉来自于目录中,但是没有出现在包导入图中的文件

non-go:修剪掉非.go 文件

go-tests:修剪掉 Go 的测试文件

Gopkg.lock 文件是工具生成的,你不用手工编辑

vendor 文件里面存放 current project 的远程依赖的源代码

当需要指定目标 project 使用哪一个 version 时,可以在 Gopkg.toml 中添加。如,需要指定 alice 版本为 0.8.4,在 Gopkg.toml 中添加:

[[constraint]]

name = "github.com/golang/dep"

version = "=0.8.4"

然后执行

dep ensure -update "github.com/golang/dep

在指定 version 的时候,如果指定 semantic version,可选的符号有=: 只选择对应 version

>或<:>

>=或<=: 大于等于(或小于等于)对应版本号

~: ~1.2.3 表示 >=1.2.3,<1.3.0

^: ^1.2.3 表示 >1.2.3,<2.0.0

不指定符号的话,默认为^符号。

有了包管理工具之后,好处还是挺多:帮你锁住依赖版本,防止第三方包升级导致代码不兼容;

将项目的依赖都放在 vendor 下,就不用依赖 gopath 下的公共包了;

4. 添加依赖

依赖管理帮助

`dep help ensure`

添加一条依赖

`dep ensure -add github.com``/bitly/go-simplejson`

一次性添加多条依赖

`dep ensure -add github.com``/pkg/errors` `github.com``/bitly/go-simplejson`

添加依赖指定依赖版本

`dep ensure -add github.com``/bitly/go-simplejson``@=0.4.3`

添加后记住执行 dep ensure 确保同步

`dep ensure -``v`

如果执行 dep ensure 出错,看下 Gopkg.toml 文件中是否同时配置了 version,branch 和 revision。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值