Golang1.12 包管理Go module使用

简介

1.11版本初步引入的GoModule模块。1.12版本正式开始支持。GoModule是官方提供的包管理解决方案。通过GoModule,开发者可以把工程放在GOPATH之外的位置。相比于之前的包管理方案: dep,vendor。GoModule的管理方案更加灵活。
我们运行go mod help来看看GoModule中有哪些命令。
在这里插入图片描述
这里主要介绍初始化相关的命令
go mod init [module]:初始化.mod 包管理文件到当前工程。
go mod vendor:vendor版本的解决方案,将依赖复制到vendor下面。
go mod tidy:移除未用的模块,以及添加缺失的模块。
go mod verify:验证所有模块是否正确。

下面我们看看怎么在工程中添加GoModule支持。

初始化GoModule

首先我们在GOPATH之外创建一个工程
目录结构如下:
在这里插入图片描述
代码如下,引用了logrus包:
在这里插入图片描述
go build当前代码
在这里插入图片描述
报错,当前没有包含module,没有发现module支持。
1.初始化module go mod init kimiProject
如下:
在这里插入图片描述
工程中自动添加了mod的支持文件
在这里插入图片描述
默认是模块名和当前的golang版本
在这里插入图片描述
当前我们再build工程,却发现报了新的错误:
在这里插入图片描述
主要是因为golang.org被墙了(高墙不胜寒),我们需要用替代地址去替换掉当前的地址。
在go.mod文件添加如下代码:
replace (
golang.org/x/crypto => github.com/golang/crypto latest
golang.org/x/sys => github.com/golang/sys latest
)

如图
在这里插入图片描述
我们再执行build
在这里插入图片描述
发现当前编译成功了。而且从替换地址下载了依赖库。我们看看go.mod文件被写入了什么:
在这里插入图片描述
GoModule自动给依赖文件加了版本号。并且把当前需要logrus require了进来。
同时也生成了可执行文件
在这里插入图片描述
GOPATH/pkg/mod/cache/download/ 生成了对应的缓存文件

以上就是在一个空白工程中添加GoModule包管理了。

猜你喜欢

转载自blog.csdn.net/qq_35554975/article/details/88365913