分享
  1. 首页
  2. 文章

Go依赖管理工具 - dep

煎鱼 · · 4699 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Go依赖管理工具

Go dependency management tool

环境要求

  • Golang >= 1.9
  • Dep

目前版本:

dep:
 version : devel
 build date : 
 git hash : 
 go version : go1.10
 go compiler : gc
 platform : linux/amd64

Latest releasev0.4.1

安装

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

$GOPATH/bin不在PATH下,则需要将生成的dep文件从$GOPATH/bin移动至$GOBIAN

验证

$ 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.

初始化

在项目根目录执行初始化命令,dep在初始化时会分析应用程序所需要的所有依赖包,得出依赖包清单

并生成vendor目录,Gopkg.tomlGopkg.lock文件

默认初始化

$ dep init -v

直接从对应网络资源处下载

优先从$GOPATH初始化

$ dep init -gopath -v

该命令会先从$GOPATH查找既有的依赖包,若不存在则从对应网络资源处下载

Gopkg.toml

该文件由dep init生成,包含管理dep行为的规则声明

required = ["github.com/user/thing/cmd/thing"]
ignored = [
 "github.com/user/project/pkgX",
 "bitbucket.org/user/project/pkgA/pkgY"
]
[metadata]
key1 = "value that convey data to other systems"
system1-data = "value that is used by a system"
system2-data = "value that is used by another system"
[[constraint]]
 # Required: the root import path of the project being constrained.
 name = "github.com/user/project"
 # Recommended: the version constraint to enforce for the project.
 # Note that only one of "branch", "version" or "revision" can be specified.
 version = "1.0.0"
 branch = "master"
 revision = "abc123"
 # Optional: an alternate location (URL or import path) for the project's source.
 source = "https://github.com/myfork/package.git"
 # Optional: metadata about the constraint or override that could be used by other independent systems
 [metadata]
 key1 = "value that convey data to other systems"
 system1-data = "value that is used by a system"
 system2-data = "value that is used by another system"

Gopkg.lock

该文件由dep ensuredep init生成,包含一个项目依赖关系图的传递完整快照,表示为一系列[[project]]

# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
[[projects]]
 branch = "master"
 name = "github.com/golang/protobuf"
 packages = [
 "jsonpb",
 "proto",
 "protoc-gen-go/descriptor",
 "ptypes",
 "ptypes/any",
 "ptypes/duration",
 "ptypes/struct",
 "ptypes/timestamp"
 ]
 revision = "bbd03ef6da3a115852eaf24c8a1c46aeb39aa175"

常用命令

dep ensure

从项目中的Gopkg.tomlGopkg.lock中分析关系图,并获取所需的依赖包

用于确保本地的关系图、锁、依赖包清单完全一致

dep ensure -add

# 引入该依赖包的最新版本
dep ensure -add github.com/pkg/foo
# 引入具有特定约束(指定版本)的依赖包
dep ensure -add github.com/pkg/foo@^1.0.1

dep ensure -update

Gopkg.lock中的约定依赖项更新为Gopkg.toml允许的最新版本

最后

目前dep还在官方试验阶段,但已表示生产可安全使用

如果出现什么问题,大家可以一起留个言讨论讨论


有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:煎鱼

查看原文:Go依赖管理工具 - dep

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
4699 次点击
2 回复 | 直到 2019年06月03日 16:39:28
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏