• 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 加入到环境变量中。

    如果这种方式下载不下来,你也可以手动下载:点击这里,挑选适合你的版本,然后修改文件名为dep.exe放入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

    不指定符号的话,默认为^符号。

    有了包管理工具之后,好处还是挺多:

    1. 帮你锁住依赖版本,防止第三方包升级导致代码不兼容;
    2. 将项目的依赖都放在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。

  • 相关阅读:
    5-互评-OO之接口-DAO模式代码阅读及应用
    3.1-互评-OO设计-有理数类的设计
    机器学习(3)
    SpringBoot拦截器注入 Service 为空问题
    阿里强制要求的21条Java开发规范【转载】
    动态规划入门
    图神经网络第一章笔记
    PC端工业应用开发宝典3-数据持久化
    PC端工业应用开发宝典2-兼容性问题
    VUE登陆界面监听回车键响应登陆按钮
  • 原文地址:https://www.cnblogs.com/rickiyang/p/11074177.html
Copyright © 2020-2023  润新知