zoukankan      html  css  js  c++  java
  • Go依赖管理工具

    https://segmentfault.com/a/1190000013561841

    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文件

    image

    默认初始化

    $ 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还在官方试验阶段,但已表示生产可安全使用

  • 相关阅读:
    线程锁(互斥锁Mutex)及递归锁
    threading模块,python下的多线程
    笔试面试题实现
    Socket编程,SocketServer模块
    iOS开发- 文件共享(利用iTunes导入文件, 并且显示已有文件)
    iOS 根据文件名获取到文件路径
    IOS UILabel自动换行
    🐤小记
    iOS 获取当前月份的天数(转)、
    IOS 在Ipad 横屏 上使用UIImagePickerController
  • 原文地址:https://www.cnblogs.com/dhcn/p/11158279.html
Copyright © 2011-2022 走看看