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 release为v0.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.toml、Gopkg.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 ensure和dep 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.toml和Gopkg.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还在官方试验阶段,但已表示生产可安全使用

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

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

dep指定版本 go_Go依赖管理工具 - dep相关推荐

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

    dep 是一个 golang 依赖管理工具,需要在 Go 1.7 及更高的版本中使用. 1. 安装 安装 dep 工具的方式有很多种,如果是 mac 电脑的话,只需要如下命令: brew instal ...

  2. go之官方依赖管理工具dep安装和使用

    前言 大家都知道go没有一个自己的包管理平台.社区里go的第三方包托管在各个git托管平台.需要用到包时通过go get 命令工具安装,但这个工具没有版本描述性文件,在go的世界里没有"pa ...

  3. golang 官方依赖管理工具 dep 使用和持续集成

    介绍 go dep 依赖管理工具是为应用管理代码的,go get是为GOPATH管理代码的 官方地址 官方说明为啥要统一依赖管理 dep 需要在Go 1.7及更高的版本中使用 安装 本文使用 gola ...

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

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

  5. linux go vendor目录,Go 包依赖管理工具 —— govendor

    govendor 是一个基于 vendor 机制实现的 Go 包依赖管理命令行工具.与原生 vendor 无侵入性融合,也支持从其他依赖管理工具迁移,可以很方便的实现同一个包在不同项目中不同版本.以及 ...

  6. GO 依赖管理工具go Modules

    以前写过一篇关于go管理依赖包工具 dep的文章,当时认为dep将会成为官方依赖工具,现在看来是自己图样图斯内幕破了,正如官方一直提到dep是"official experiment&quo ...

  7. Golang依赖管理工具:glide从入门到精通使用

    2019独角兽企业重金招聘Python工程师标准>>> 介绍 不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题.Java有牛逼轰轰的Maven和Gradle. G ...

  8. window下PHP依赖管理工具Composer的安装与使用

    一.什么是Composer? Composer 是 PHP 的一个依赖管理工具.我们可以在项目中声明所依赖的外部工具库,Composer 会帮你安装这些依赖的库文件,有了它,我们就可以很轻松的使用一个 ...

  9. go build不从本地gopath获取_跟我一起学习go语言,包依赖管理工具go mod

    Go Module是Go会在1.12中正式推出的包管理机制. Go mod 简介 Golang一直存在一个被人诟病的问题是缺少一个官方的包依赖管理工具.从我个人的角度上来看存在两个问题: GOPATH ...

最新文章

  1. Linux系统开发之路-中
  2. Nature综述:多年冻土的微生物组
  3. Spring Cloud Feign的文件上传实现
  4. EF Code First 学习笔记:关系
  5. Android自己定义组件系列【4】——自己定义ViewGroup实现双側滑动
  6. 我心中的ASP.NET Core 新核心对象WebHost(二)
  7. Python 数据分析三剑客之 Matplotlib(一):初识 Matplotlib 与其 matplotibrc 配置文件
  8. fedora 安装chrome
  9. ffmpeg (三):ffmpeg结合SDL2.0解码音频流
  10. 来到博客园许久,却还未开始写一篇自己的博客。从今天开始,每周都会更新自己的学习内容。...
  11. Oracle 常用脚本1
  12. hmcl手机版_hmcl启动器手机版
  13. Wiki开源软件介绍
  14. ios游戏和android,20款最受好评的iOS和Android游戏
  15. 重构:改善既有代码的设计(评注版)
  16. win10 卸载linux子系统
  17. Unity animation动画编辑器快捷键
  18. 在windows11环境下如何通过主机名ping通其它系统
  19. 【做题笔记】P2327 [SCOI2005]扫雷
  20. 企业网络组建项目实训--交换机的配置与管理(下)

热门文章

  1. 《高效能人士的七个习惯》读书摘要
  2. 敏涵控股集团|用心做企业 用爱做慈善
  3. linux xampp开始伪静态,Linux XAMPP下启用WordPress的自定义文件名(伪静态)功能
  4. 阿里云丁宇:云上开发成为主流,Serverless 定义新范式
  5. WhaleCTF 密码学_Writeup
  6. 微型真空泵、气泵调节流量的方法——电控详解
  7. MongoDB从入门到实践(Docker安装及整合SpringBoot)
  8. buzz fizz 翻译_The Fizz-Buzz
  9. 零基础如何学习新媒体各个平台,实现就业新媒体运营工作!
  10. 每日一个Linux命令之chmod命令