Go语言包管理工具Godep的用法

一、为什么要包管理

默认Go的第三方包都是放在Gopath的src目录下,而且这些包都没有版本号的概念,这样的可能会出现一些问题。

举个例子:当A同事将开发完程序之后,此时可能引用了一个第三方的包,过了不久之后,B同事接手了该项目,此时如果B同事通过go get 命令获取了包,而且包的版本进行了升级,恰巧这个包又不兼容以前的版本,这就会导致程序编译错误等问题。或者当这个维护的第三方包删除了,那么B同学则不能下载到该包。

由上面的例子就能知道,为什么需要进行包的依赖管理了。

go里面进行包依赖管理的工具有几个。godep就是其中之一。

二、安装godep

1.安装方法: go get github.com/tools/godep

2.验证是否安装成功:在shell里面键入 godep ,应该会出现帮助信息。

Usage:

        godep command [arguments]

The commands are:

    save     list and copy dependencies into Godeps             //save命令主要是用于保存当前的依赖
    go       run the go tool with saved dependencies            //主要是用于执行Go程序,相当于在原来的go命令上套了一层,因为涉及到了包管理
    get      download and install packages with specified dependencies  //get命令主要是用于获取当前指定的依赖包
    path     print GOPATH for dependency code
    restore  check out listed dependency versions in GOPATH         //把依赖的包都下载到Gopath当中
    update   update selected packages or the go version         //更新依赖的包
    diff     shows the diff between current and previously saved set of dependencies
    version  show version info

三、演示如何使用godep

如下项目使用了第三方的包,那么我们就可以使用godep进行包管理

1. 在项目根目录,执行godep save 命令,如果执行成功,则会生成两个文件夹 Godeps 和 vendor

godep save 会把当前包所依赖的所有第三方包扫描出来,然后将源代码放在vendor目录下。

GoDeps保存的是第三方包的依赖信息

Vendor保存所有依赖的第三方包

可以查看一下Godep.json

{
    "ImportPath": "godepDemo/protobuf",
    "GoVersion": "go1.10",
    "GodepVersion": "v80",
    "Deps": [
        {
            "ImportPath": "github.com/golang/protobuf/proto",
            "Comment": "v1.3.2-1-g4c88cc3f",
            "Rev": "4c88cc3f1a34ffade77b79abc53335d1e511f25b"
        }
    ]
}

Deps这一个字段里面保存着当前依赖包的路径、git提交的版本号信息。下次在拉下代码之后,执行Go build 就会执行Vendor里面的代码,这样就再也不用担心代码不一致的问题。

备注:当引用的第三方包要升级了怎么办,那么就修改Godep.json里面的提交的版本号就行了。

Godep是怎么实现版本管理的,可以参考下面这个图。

总结如何使用godep

  • 1.保证程序能够正常编译
  • 2.执行godep save 命令,执行之后会将所有的依赖的第三方包扫描出来,生成Godeps和Vendor目录
  • 3.提交上面两个文件夹到自己的代码库,提交之后我们代码中的第三方依赖就固定下来了。
  • 4.如果需要更新依赖的版本,那么直接更新godep.json里面的第三方包的版本号,然后再执行一次godep save,最后提交到我们的代码库就行了。

例如:可以查看一下我依赖的protobuf的commitId

然后更新一下Godeps.json里面的版本号

到此这篇关于Go使用Godep进行包管理的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • GO语言包管理工具go mod以及包详解

    目录 1.GO中包的定义与介绍 2. 包管理工具 go mod 2.1 自定义包 (可以包含多个go文件) 2.1.1 建立项目并go mod init初始化 2.1.2 自定义一个包(文件夹)并书写方法 2.1.3 引入自定义包,并使用 2.1.4 函数init执行顺序 init函数会自动执行 3. golang中使用第三方包 3.1 查找第三方包 3.2 安装包 3.2.1 go get (全局) 3.2.2 go download (全局) 补充:常用命令 总结 1.GO中包的定义与介绍

  • Golang中的包及包管理工具go mod详解

    目录 一.包 二.包管理工具go mod 三.init函数 四.使用第三方包 一.包 1.包的种类:系统内置包.自定义包.第三方包. (1)系统内置包:go语言自带包,如str.conv.fmt等 (2)自定义包:开发者自己写的包 (3)第三方包:属于自定义包的一种,需下载到本地才能使用, 如可以从GitHub上下载的第三方包. 2.包是多个go源文件的集合,一个package下可以有多个go文件,归属于同一package 二.包管理工具go mod 1.在go的1.11版本之前如果想自定义包需

  • Go语言包管理工具dep的安装与使用

    什么是dep? dep和go,在一定程度上相当于maven之于Java,composer之于PHP,dep是go语言官方的一个包管理工具. 相比较go get而言,dep可以直接给引入的第三方包一个专门的目录,并且可以专门制定一个配置文件,控制go项目所引入的包,版本以及其他依赖关系. dep这个项目放在golang官方的github中:https://github.com/golang/dep 官方对于dep的解释是:dep is the official experiment, but no

  • AERGO SHIP:用于开发智能合约的包管理器

    AERGO SHIP:用于开发智能合约的包管理器 用于构建.测试和部署分布式应用程序的客户端框架和开发环境 构建大型分布式应用程序是很困难的,因为对其进行测试,使其实现端到端工作,并进行部署是一个非常耗时的过程.通过AERGO,我们计划让一切变得与众不同. AERGO是一个为在实现基于区块链的系统和应用程序时面临众多独特挑战的企业提供解决方案的平台.为了提高开发.测试和部署智能合约的效率和易用性,我们创建了SHIP.SHIP是Lua智能合约包管理器.它将本地开发环境与Git和分布式分类账连接起来

  • golang开发go包依赖管理godep使用教程

    目录 介绍 安装 包管理使用 godep 拉取依赖 restore 用于开发 检出依赖 save godep 编译运行 build Godeps目录的作用 godep其他命令 介绍 godep是解决包依赖的管理工具,目前最主流的一种,原理是扫描记录版本控制的信息,并在go命令前加壳来做到依赖管理 godep 建议在 golang 1.6 以后使用 godep 依赖 vendor 具体查看 https://stackoverflow.com/questions/37237036/how-shoul

  • Go语言包管理工具Godep的用法

    一.为什么要包管理 默认Go的第三方包都是放在Gopath的src目录下,而且这些包都没有版本号的概念,这样的可能会出现一些问题. 举个例子:当A同事将开发完程序之后,此时可能引用了一个第三方的包,过了不久之后,B同事接手了该项目,此时如果B同事通过go get 命令获取了包,而且包的版本进行了升级,恰巧这个包又不兼容以前的版本,这就会导致程序编译错误等问题.或者当这个维护的第三方包删除了,那么B同学则不能下载到该包. 由上面的例子就能知道,为什么需要进行包的依赖管理了. go里面进行包依赖管理

  • Python包管理工具pip用法详解

    pip提供我们各色各样的软件(第三方库),而这些第三方库又可以给我们实现各种各样不同的功能,科学计算.画图.操作文件.聊天…… 我们可以通过Cmd终端.Pycharm.Jupyter三种平台使用pip安装这些第三方库. 官方Python 第三方库软件包地址:PyPI · Python 包索引 Anaconda,Conda,Pip的关系 Anaconda是一个python发行版.软件发行版是在系统上提前编译和配置好的软件包集合, 装好了后就可以直接用. Conda是一个包管理器.包管理器是自动化软

  • node.js中npm包管理工具用法分析

    本文实例讲述了node.js中npm包管理工具用法.分享给大家供大家参考,具体如下: 现在安装node.js,默认就会帮我们装上了npm包管理工具,npm主要用来下载,安装,管理第三方模块. 创建一个包描述文件: npm init [-y] 查看包的信息 npm info <package-name> 查看包的版本信息 npm info <package-name> versions 安装指定的包: npm install <package-name> 默认会安装在当前

  • node.js包管理工具Yarn使用简介

    Yarn是由Facebook.Google.Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 , 它主要是为了弥补 npm 的一些缺陷而出现的.和npm相比,它具有如下特点: 速度快 : 主要来自以下两个方面: 并行安装:并行执行所有任务,提高了性能. 离线模式:如果之前已经安装过一个软件包,再次安装时直接从缓存中获取. 安装版本统一:每一次拉取同一个项目依赖时,使用的都是一样的模块版本. 更简洁的输出: Yarn结合了 emoji直观且直接地打印出必要的信息,也提供了一些

  • Web前端开发工具——bower依赖包管理工具

    Bower 是 twitter 推出的一款包管理工具,基于nodejs的模块化思想,把功能分散到各个模块中,让模块和模块之间存在联系,通过 Bower 来管理模块间的这种联系. 包管理工具一般有以下的功能: a)注册机制:每个包需要确定一个唯一的 ID 使得搜索和下载的时候能够正确匹配,所以包管理工具需要维护注册信息,可以依赖其他平台. b)文件存储:确定文件存放的位置,下载的时候可以找到,当然这个地址在网络上是可访问的. c)上传下载:这是工具的主要功能,能提高包使用的便利性.比如想用 jqu

  • bower 强大的管理web包管理工具

    Bower介绍 bower官方地址:http://bower.io/ bower是twitter的又一个开源项目,使用nodejs开发,用于web包管理.如果越来越多得开源项目都托管在github上,bower只需要将github上项目加上一个配置文件既可以使用bower方式使用安装包.作为包管理,bower能提供添加新web包,更新web包,删除web包,发布web包功能,管理包依赖.web包通常认为由html+css+javascript构成. quick start: 解决实际问题 试想我

  • 浅谈node模块与npm包管理工具

    在Node.js中,以模块为单位划分所有的功能,并且提供了一个完整的模块加载机制,所以我们可以将应用程序划分为各个不同的部分,并且对这些部分进行很好的协同管理.通过将各种可重用代码编写在各种模块中的方法,可以大大减少应用程序的代码量,提高应用程序的开发效率以及应用程序代码的可读性.通过模块加载机制,可以将各种第三方模块引入到我们的应用程序中. 在node.js中,提供npm包管理工具,用于从第三方网站上下载各种Node.js包. 一.模块 1.1 加载模块 在Node.js中,以模块为单位划分所

随机推荐