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

作者:奋斗的大橙子 时间:2024-02-20 04:09:44 

一、为什么要包管理

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

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

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

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

二、安装godep

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

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

Go语言包管理工具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进行包管理

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

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

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

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

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是怎么实现版本管理的,可以参考下面这个图。

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

总结如何使用godep

  • 1.保证程序能够正常编译

  • 2.执行godep save 命令,执行之后会将所有的依赖的第三方包扫描出来,生成Godeps和Vendor目录

  • 3.提交上面两个文件夹到自己的代码库,提交之后我们代码中的第三方依赖就固定下来了。

  • 4.如果需要更新依赖的版本,那么直接更新godep.json里面的第三方包的版本号,然后再执行一次godep save,最后提交到我们的代码库就行了。

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

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

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

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

来源:https://www.cnblogs.com/dcz2015/p/11428458.html

标签:Go,Golang,Godep,包管理,工具
0
投稿

猜你喜欢

  • 浅析MySQL内存的使用说明(全局缓存+线程缓存)

    2024-01-26 02:46:20
  • php下载远程大文件(获取远程文件大小)的实例

    2024-05-03 15:29:47
  • IE和Firefox下event事件杂谈

    2024-04-22 13:25:33
  • 通过Python绘制中国结的示例代码

    2021-05-29 15:15:21
  • .NET中IoC框架Autofac用法讲解

    2024-06-05 09:26:21
  • 分支任务:从哪里来,回哪里去

    2009-09-04 18:58:00
  • MySQL带你秒懂索引下推

    2024-01-15 18:34:42
  • Golang两行代码实现发送钉钉机器人消息

    2024-04-26 17:30:39
  • SQL分组排序去重复的小实例

    2024-01-19 15:30:46
  • 20分钟MySQL基础入门

    2024-01-22 21:37:54
  • Pycharm 2020最新永久激活码(附最新激活码和插件)

    2023-06-14 14:21:21
  • git设置忽略文件.gitignore的方法

    2023-05-18 02:12:19
  • Java语言实现对MySql数据库中数据的增删改查操作的代码

    2024-01-21 21:19:43
  • 解决sql server保存对象字符串转换成uniqueidentifier失败的问题

    2024-01-20 01:22:59
  • kafka-python批量发送数据的实例

    2023-04-24 04:40:23
  • Python 文件操作方法总结

    2023-11-29 11:36:28
  • php过滤器使用详解

    2023-06-13 01:52:23
  • Python编程mac下使用pycharm小技巧

    2022-10-21 19:23:52
  • Python实现图片指定位置加图片水印(附Pyinstaller打包exe)

    2023-08-13 04:27:16
  • 数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法

    2021-05-05 05:36:39
  • asp之家 网络编程 m.aspxhome.com