您所在的位置:首页 / 知识分享

Go语言依赖管理

2020.01.14

1280

最初的时候Go语言所依赖的所有的第三方包都放在 GOPATH 目录下面,这就导致了同一个包只能保存一个版本的代码,如果不同的项目依赖同一个第三方的包的不同版本,应该怎么解决呢?

godep

godep 是一个Go语言官方提供的通过 vender 模式来管理第三方依赖的工具,类似的还有由社区维护的准官方包管理工具 dep。

Go语言从 1.5 版本开始开始引入 vendor 模式,如果项目目录下有 vendor 目录,那么Go语言编译器会优先使用 vendor 内的包进行编译、测试等。


安装godep工具
我们可以通过go get 命令来获取 godep 工具。

go get github.com/tools/godep


命令执行成功后会将 godep 工具的源码下载到 GOPATH 的 src 目录下对应的文件夹中,同时还会在 GOPATH 的 bin 目录下生成一个名为 godep.exe 的可执行文件


为了方便使用 godep 工具,我们需要将存放 godep.exe 文件的目录添加到环境变量 PATH 中。在系统变量中找到并选中“Path”一行,点击“编辑”按钮,在新弹出的窗口中点击“新建”,然后在最下面一行中填入对应的目录信息。确认无误后点击“确定”。


godep工具的基本命令

完成上面的操作后,我们就可以在命令行窗口(CMD)中使用 godep 工具了,godep 支持的命令如下表所示:

命令 作用
godep save 将依赖包的信息保存到 Godeps.json 文件中
godep go 使用保存的依赖项运行 go 工具
godep get 下载并安装指定的包
godep path 打印依赖的 GOPATH 路径
godep restore 在 GOPATH 中拉取依赖的版本
godep update 更新选定的包或 go 版本
godep diff 显示当前和以前保存的依赖项集之间的差异
godep version 查看版本信息

使用godep help [命令名称]可以查看命令的帮助信息。


使用godep工具

执行godep save 命令,会在当前目录中创建 Godeps 和 vender 两个文件夹。Godeps 文件夹下会生成一个 Godeps.json 文件,用来记录项目中所依赖的包信息;vender 目录则是用来保存当前项目所依赖的所有第三方包。

生成的 Godeps.json 文件的结构如下所示:

{
    "ImportPath": "main",
    "GoVersion": "go1.13",
    "GodepVersion": "v80",
    "Deps": [
        {
            "ImportPath": "github.com/go-gomail/gomail",
            "Comment": "2.0.0-23-g81ebce5",
            "Rev": "81ebce5c23dfd25c6c67194b37d3dd3f338c98b1"
        }
    ]
}


其中,“ImportPath”为项目的路径信息,“GoVersion”为Go语言的版本号,“GodepVersion”为 godep 工具的版本号,“Deps”为当前依赖包的路径、版本号信息等等。

提示:当引用的第三方包要升级时,只需要修改 Godep.json 里面的依赖包的版本号,然后再次执行 godep save 命令即可。


godep 工具的主要功能就是控制Go语言程序编译时依赖包搜索路径的优先级。例如查找项目的某个依赖包,首先会在项目根目录下的 vender 文件夹中查找,如果没有找到就会去 GOAPTH/src 目录下查找。






相关新闻

小程序 - 验证码倒计时组件

2018.12.26

2389

发送验证码倒计时的方法很常见,在项目里面也经常会多次用到,这时就要把倒计时封装为组件,需要用到的时候方便使用。