Go 语言 依赖管理

2,116 阅读2分钟

gopath和vendor的依赖管理

这俩其实挺坑的,特别的不好用,已经进入的了go语言历史的垃圾堆,大家知道一下就好,因为现在go项目都是利用go mod 来做第三方库的管理。 之前的gopath和vendor不好用 主要是对项目的结构有要求,设置繁琐,无法区分同一库不同版本号等等多种原因。

go mod 依赖管理

在这之前 我们要看下goland的基本设置

image.png

一定不要遗漏这一步 不然goland 总是刷新不了你下载的第三方库,即使你在命令行里面设置了export的go proxy也没用,还是会出现拉到第三方库但是ide中 无法检索到的错误

github.com/uber-go/zap 可以用这个库 来体会一下 go语言的依赖管理

直接go get 命令 下载这个第三方库

这里可以看到我们下载的第三方库到底在哪里 image.png

当然也可以指定第三方库的版本

image.png

不指定版本的时候总会拉取最新的版本

还可以清理一下 有点类似于 maven clean image.png

多main入口的情况下 官方的目录设置

go get golang.org/x/tools

前面的文章提到过,go语言一个目录下 只能有一个main函数,那有时候我们需要有多个main函数的go项目怎么办? 当然是多个目录啦,虽然这个方法很土,但是很好用。

可以看下官方就是这么管理的。多个目录下 多个go文件都有自己的main函数

image.png

go build 与 go install

image.png

我们在这个go build的时候 会自动生成 可执行文件。

看看多目录的时候会发生什么?

简单看下目录结构 其实就是2个目录下 各有一个具有main函数的 go文件 image.png

我想一次性编译出来,不想分别cd到对应目录 应该怎么做?

image.png

这里能看出来 我们编译是成功了,但是可执行文件呢? 哪去了?其实针对于这种情况 go build 也只是能检测下是否编译成功而已,真正要拿到编译后的产物 要用到go install 命令

image.png

图中可以清晰的看到 编译后的产物 都在你 gopath的bin目录下 且编译后的可执行文件的名称就是你文件路径的名称