Go语言依赖管理

Go语言依赖管理

0、说明:

导入第三方的库,一般有下面几种方式进行管理第三方库,现在一般推荐使用go mod的方式进行管理。其他两个了解一下就行了。

1、管理方式GOPATH

GOPATH是一个环境,Linux默认在~/go目录下,Windows默认在%USERPOFILE%\go目录下,当然也可以自己指定目录。

自己的包路径以及第三方的包路径都放在GOPATH目录下,import的模块全到GOPATH下找,很明显这样会导致GOPATH越来越大。

并且,需要在GOPATH的目录下创建一个叫src的目录,且只能叫src。一般安装时会默认创建。

并且,需要设置GO111MODULE=off,一般安装时,默认就是off

例如:

假设GOPATH目录是/tmp/gopathtest,则需要创建src目录,然后创建项目时,选择该路径,而不能乱选路径,否则会导不到对应的包。就像这样

image-20220617063555803

创建完项目后,我们下载第三方库zap文件

 go get go.uber.org/zap

我们可以看到,这个包会放在GOPATH下

image-20220617064250409

image-20220617064713213

找依赖时,会先去GOROOT找,然后再去GOPATH找,GOROOT就是Go安装的目录,GOPATH就是上面说的

太麻烦了,因此现在一般不用了。

2、管理方式GOVENDOR

GOPATH有一个缺点,就是不能使用不同版本的包,假设你用的zap是1.12,而我用的1.1,但GOPATH下只能存一份zap。这样解决的方法就是在自己的项目中添加一个虚拟环境,然后下载自己需要版本的zap,虚拟环境的目录名必须叫vendor,因为go会去找个目录下找。这种方式就叫GOVENDOR。

go查找的目录就变成了先找当前项目下的vendor,然后是GOROOT,最后是GOPATH.

image-20220617065911745

对应也诞生了一些第三方依赖管理工具,例如

glide

dep

也挺麻烦,现在一般也不用了

3、管理方式go mod

以go mod方式创建项目,会自动生成go.mod文件和go.sum文件

下载的第三方包,会自动下载到GOPATH下的pkg文件夹下mod文件夹下

依赖的包都会写在go.mod中

使用go mod init xxx初始化一个go.mod文件

使用go get xxx来下载第三方包,更新到go.mod文件中

使用go mod tidy来清理go.mod

go get指定版本go get xxx@yyy,不指定就会下载最新的

posted @ 2022-06-18 20:05  南风丶轻语  阅读(120)  评论(0编辑  收藏  举报