Go语言包管理工具Godep的用法
来源:脚本之家
时间:2022-12-31 20:55:58 302浏览 收藏
IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《Go语言包管理工具Godep的用法》,聊聊包管理、工具、dep,我们一起来看看吧!
一、为什么要包管理
默认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里面的版本号
文中关于golang的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Go语言包管理工具Godep的用法》文章吧,也可关注golang学习网公众号了解相关技术文章。
-
334 收藏
-
491 收藏
-
372 收藏
-
203 收藏
-
414 收藏
-
384 收藏
-
246 收藏
-
110 收藏
-
210 收藏
-
108 收藏
-
367 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习
-
- 美好的煎蛋
- 这篇文章出现的刚刚好,很详细,太给力了,mark,关注老哥了!希望老哥能多写Golang相关的文章。
- 2023-04-08 23:55:36
-
- 俭朴的咖啡
- 这篇技术贴真是及时雨啊,太全面了,很棒,收藏了,关注老哥了!希望老哥能多写Golang相关的文章。
- 2023-01-25 14:34:29
-
- 潇洒的火龙果
- 这篇文章内容太及时了,楼主加油!
- 2023-01-21 04:54:37
-
- 务实的信封
- 写的不错,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,帮助很大,总算是懂了,感谢师傅分享文章内容!
- 2023-01-15 15:24:54
-
- 伶俐的香菇
- 太给力了,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢作者分享博文!
- 2023-01-10 18:37:09
-
- 欣慰的雪糕
- 很有用,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,帮助很大,总算是懂了,感谢作者大大分享文章!
- 2023-01-10 05:10:21
-
- 爱笑的哈密瓜,数据线
- 好细啊,mark,感谢老哥的这篇博文,我会继续支持!
- 2023-01-09 20:32:32
-
- 激动的黑夜
- 这篇技术文章出现的刚刚好,太详细了,太给力了,码住,关注老哥了!希望老哥能多写Golang相关的文章。
- 2023-01-09 02:17:28
-
- 着急的小松鼠
- 这篇博文太及时了,很详细,很好,码起来,关注老哥了!希望老哥能多写Golang相关的文章。
- 2023-01-08 09:08:42
-
- 傻傻的舞蹈
- 很详细,收藏了,感谢up主的这篇文章内容,我会继续支持!
- 2023-01-06 01:45:57
-
- 高兴的悟空
- 太细致了,码住,感谢作者大大的这篇博文,我会继续支持!
- 2023-01-02 08:01:31