初探go-dep使用小结

初探go-dep使用小结
2018/6/1

前言

用来干什么

dep 是用来解决 go 的依赖问题的

准备工作
~]# go get -u github.com/golang/dep/cmd/dep
~]# dep help
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.

操作示例

初始化

在代码中 import 了库后,在代码目录先初始化:

~]# dep init -v

~]# ls
app.go  Gopkg.lock  Gopkg.toml  vendor
指定依赖的版本

如果有需要指定版本的,则修改 Gopkg.toml
然后执行:

~]# dep ensure -update -v

关于约束指定的版本,以 Gopkg.toml 的内容示例

[[constraint]]
  name = "google.golang.org/grpc"
  version = "=v1.3.0"

上述表示使用 1.3.0 这个版本,当然,还有以下表示方法:

"1.3.0" 约束使用 1.3.0 - 2.0.0 之间的最新版
"<=1.3.0" 约束使用最高版本为 1.3.0

详细的解释请参考文档:
https://github.com/golang/dep/blob/master/README.md

注意细节:
https://github.com/golang/dep/issues/1321

如果有依赖关联了,例如:
github.com/coreos/etcd
使用了 grpc 的新版本,则上述指定的 grpc 的依赖将失效,从而拉取到最新的版本 1.7.3(不符合预期,本以为是 1.3.0 这个版本)

查看当前版本
~]# dep status
PROJECT                                           CONSTRAINT    VERSION          REVISION  LATEST   PKGS USED
github.com/coreos/etcd                              3.2.10       v3.2.10         6f48bda   6f48bda  6
google.golang.org/grpc                              1.3.0       v1.7.3           401e0e0   d2e1b51  17
k8s.io/kubernetes                                   1.8.3       v1.8.3           f0efb3c   f0efb3c  7
约定版本

显然,,约束的是 1.3.0 然而实际上却使用了 1.7.3
此时,我还是想强制使用该版本,怎么办?(但要注意,因为有其他的组件,例如 etcd 也使用了该库,强制覆盖将导致异常,因而,要根据实际情况来判断)
使用 override 来覆盖

[[override]]
  name = "google.golang.org/grpc"
  version = "=v1.3.0"
更新
~]# dep ensure -update -v

~]# dep status
PROJECT                                           CONSTRAINT        VERSION      REVISION  LATEST   PKGS USED
github.com/coreos/etcd                              3.2.10       v3.2.10         6f48bda   6f48bda  6
google.golang.org/grpc                              * (override)    v1.3.0       d2e1b51   401e0e0  14
k8s.io/kubernetes                                   1.8.3           v1.8.3       f0efb3c   f0efb3c  7

ZYXW、参考

  1. 初窥dep

转载于:https://blog.51cto.com/nosmoking/2043831

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值