dep指定版本 go_Go 包管理工具-dep
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。
dep指定版本 go_Go 包管理工具-dep相关推荐
- dep指定版本 go_Go依赖管理工具 - dep
Go依赖管理工具 Go dependency management tool 环境要求 Golang >= 1.9 Dep 目前版本: dep: version : devel build da ...
- 小白都能看懂的go语言包管理工具DEP详解
简介 众所周知GO语言包管理工具百花齐放,前有godep.glide.govendor,后有dep. 今天我们来了解一下"dep",看看它是怎样实现包管理的. dep安装 二进制文 ...
- dep指定版本 go_Go 1.12 版本的新特性
Go 1.12 昨天,Go 官方发布 1.12 版本.本文介绍下 Go 1.12 版本变更的内容. Go 1.12 正式版发布了,距离上个正式发布版 Go 1.11 已经过去半年.跟往常一样,Go 1 ...
- node包管理工具npm的更多用法
node的包管理工具npm node现在的火热程度一点都没有下降,而成为了前端必备工具,特别是npm的包库已经成为了前端必备的,即使你不接触node作为后端的存在,现在各种第三方包依然需要使用npm来 ...
- Go:包管理工具GOPATH、vendor、dep 、go module
目录 Go包管理工具:前言 GOPATH vendor.dep Go modules Module 文件 go mod命令 Go modules使用步骤: go module的文件下载后位置: Go包 ...
- Golang包管理工具(三)之dep的使用
本文个人博客地址:http://www.huweihuang.com/article/golang/dep-usage/ 更多golang包管理工具参考 - dep的使用 - glide的使用 - g ...
- 外来Slackware包管理工具[转]
http://blog.csdn.net/eroswang/archive/2007/08/11/1738766.aspx一.SWARET ---网络安装模式的实现! 1.简介: swaret可以进行 ...
- golang中的包管理工具——govendor和godep简单学习
为什么用vendor目录 依赖问题 我们知道,一个工程稍大一点,通常会依赖各种各样的包.而Go使用统一的GOPATH管理依赖包,且每个包仅保留一个版本.而不同的依赖包由各自的版本工具独立管理,所以当所 ...
- Java基础-Eclipse第三方安装包管理工具之Maven
Java基础-Eclipse第三方安装包管理工具之Maven 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 玩过Linux的小伙伴应该都知道yum吧,我们只要把搭建好的yum仓库配 ...
最新文章
- 微信小程序数据过滤(filter)方法
- 【工业控制】如何优化波形
- 网页设计表格单元格线条及边框设置
- 周六直播丨细致入微 – OceanBase云平台安装部署实战
- flutter 动画展开菜单_蒲公英 · JELLY技术周刊 Vol.34: 芜湖~ Flutter
- JSP乱码(Tomcat和Weblogic)
- 《应用时间序列分析:R软件陪同》——1.3 R软件入门
- Java IO多路复用机制详解
- MySQL自学笔记(三)
- 五年上市路,君亭才刚刚出发
- Guawa的Splitter的工具类
- oracle数据库用户状态失效Expired
- Java实现 蓝桥杯VIP 算法提高 分苹果
- 计算机键盘时好时坏,电脑鼠标时好时坏的解决方法
- 数学在机器学习中的重要性
- 详谈气象站的功能区别
- 12段8位驱动芯片TM1629D驱动12位8段共阳数码管
- 三自由度求解正逆运动学
- Kinect的学习笔记发展一Kinect引进和应用
- ecstore安装 mysql_Ecstore Nginx+php+mysql 环境搭建