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相关推荐

  1. dep指定版本 go_Go依赖管理工具 - dep

    Go依赖管理工具 Go dependency management tool 环境要求 Golang >= 1.9 Dep 目前版本: dep: version : devel build da ...

  2. 小白都能看懂的go语言包管理工具DEP详解

    简介 众所周知GO语言包管理工具百花齐放,前有godep.glide.govendor,后有dep. 今天我们来了解一下"dep",看看它是怎样实现包管理的. dep安装 二进制文 ...

  3. dep指定版本 go_Go 1.12 版本的新特性

    Go 1.12 昨天,Go 官方发布 1.12 版本.本文介绍下 Go 1.12 版本变更的内容. Go 1.12 正式版发布了,距离上个正式发布版 Go 1.11 已经过去半年.跟往常一样,Go 1 ...

  4. node包管理工具npm的更多用法

    node的包管理工具npm node现在的火热程度一点都没有下降,而成为了前端必备工具,特别是npm的包库已经成为了前端必备的,即使你不接触node作为后端的存在,现在各种第三方包依然需要使用npm来 ...

  5. Go:包管理工具GOPATH、vendor、dep 、go module

    目录 Go包管理工具:前言 GOPATH vendor.dep Go modules Module 文件 go mod命令 Go modules使用步骤: go module的文件下载后位置: Go包 ...

  6. Golang包管理工具(三)之dep的使用

    本文个人博客地址:http://www.huweihuang.com/article/golang/dep-usage/ 更多golang包管理工具参考 - dep的使用 - glide的使用 - g ...

  7. 外来Slackware包管理工具[转]

    http://blog.csdn.net/eroswang/archive/2007/08/11/1738766.aspx一.SWARET ---网络安装模式的实现! 1.简介: swaret可以进行 ...

  8. golang中的包管理工具——govendor和godep简单学习

    为什么用vendor目录 依赖问题 我们知道,一个工程稍大一点,通常会依赖各种各样的包.而Go使用统一的GOPATH管理依赖包,且每个包仅保留一个版本.而不同的依赖包由各自的版本工具独立管理,所以当所 ...

  9. Java基础-Eclipse第三方安装包管理工具之Maven

    Java基础-Eclipse第三方安装包管理工具之Maven 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 玩过Linux的小伙伴应该都知道yum吧,我们只要把搭建好的yum仓库配 ...

最新文章

  1. 微信小程序数据过滤(filter)方法
  2. 【工业控制】如何优化波形
  3. 网页设计表格单元格线条及边框设置
  4. 周六直播丨细致入微 – OceanBase云平台安装部署实战
  5. flutter 动画展开菜单_蒲公英 · JELLY技术周刊 Vol.34: 芜湖~ Flutter
  6. JSP乱码(Tomcat和Weblogic)
  7. 《应用时间序列分析:R软件陪同》——1.3 R软件入门
  8. Java IO多路复用机制详解
  9. MySQL自学笔记(三)
  10. 五年上市路,君亭才刚刚出发
  11. Guawa的Splitter的工具类
  12. oracle数据库用户状态失效Expired
  13. Java实现 蓝桥杯VIP 算法提高 分苹果
  14. 计算机键盘时好时坏,电脑鼠标时好时坏的解决方法
  15. 数学在机器学习中的重要性
  16. 详谈气象站的功能区别
  17. 12段8位驱动芯片TM1629D驱动12位8段共阳数码管
  18. 三自由度求解正逆运动学
  19. Kinect的学习笔记发展一Kinect引进和应用
  20. ecstore安装 mysql_Ecstore Nginx+php+mysql 环境搭建

热门文章

  1. 关于Oracle的提示详解(1)
  2. 嘿嘿,俺做长辈了!!!
  3. Linux 命令(49)—— export 命令(builtin)
  4. C++11 新关键字
  5. ios App开发的基本流程
  6. fusionjs 学习二 核心概念
  7. 如何避免Scrum敏捷开发团队反思会形式化,海星法介绍
  8. 基于java的微信公众平台开发(一)--账号申请与服务器的搭建
  9. as3 的3Dwebgame引擎Dgame3D正式开源
  10. 运用Loadrunner测试Mysql数据库性能