go module
1、go mole
go mole介绍#
go mole是go官方自带的go依赖管理库,在1.13版本正式推荐使用
go mole可以将某个项目(文件夹)下的所有依赖整理成一个 go.mod 文件,里面写入了依赖的版本等
使用go mole之后我们可不用将代码放置在src下了
开启go mole
windows:
set GO111MODULE=on
mac:
export GO111MODULE=on
然后输入
go env
查看 GO111MODULE 选项
GO PROXY#
go mole 的目的是依赖管理,所以使用 go mole 时你可以舍弃 go get 命令(但是不是禁止使用, 如果要指定包的版本或更新包可使用go get,平时没有必要使用)
因go的网络问题, 所以推荐使用 goproxy.cn 设置详见
https://github.com/goproxy/goproxy.cn/blob/master/README.zh-CN.md
初始化#
为你的项目第一次使用 GO MODULE(项目中还没有go.mod文件)
进入你的项目文件夹
cd xxx/xxx/test/
初始化 MODULE
go mod init test(test为项目名)
我们会发现在项目根目录会出现一个 go.mod 文件
注意,此时的 go.mod 文件只标识了项目名和go的版本,这是正常的,因为只是初始化了
检测依赖#
go mod tidy
tidy会检测该文件夹目录下所有引入的依赖,写入 go.mod 文件
写入后你会发现 go.mod 文件有所变动
此时依赖还是没有下载的
下载依赖#
我们需要将依赖下载至本地,而不是使用 go get
go mod download
如果你没有设置 GOPROXY 为国内镜像,这步百分百会夯住到死
此时会将依赖全部下载至 GOPATH 下,会在根目录下生成 go.sum 文件, 该文件是依赖的详细依赖, 但是我们开头说了,我们的项目是没有放到 GOPATH 下的,那么我们下载至 GOPATH 下是无用的,照样找不到这些包
导入依赖#
go mod vendor
执行此命令,会将刚才下载至 GOPATH 下的依赖转移至该项目根目录下的 vendor(自动新建) 文件夹下
依赖更新#
这里的更新不是指版本的更新,而是指引入新依赖
依赖更新请从检测依赖部分一直执行即可,即
go mod tidy
go mod download
go mod vendor
新增依赖#
有同学会问,不使用 go get ,我怎么在项目中加新包呢?
直接项目中 import 这个包,之后更新依赖即可
在协作中使用 GOMODULE#
要注意的是, 在项目管理中,如使用git,请将 vendor 文件夹放入白名单,不然项目中带上包体积会很大
git设置白名单方式为在git托管的项目根目录新建 .gitignore 文件
设置忽略即可.
但是 go.mod 和 go.sum 不要忽略
另一人clone项目后在本地进行依赖更新(同上方依赖更新)即可
GOMODULE常用命令#
go mod init # 初始化go.mod
go mod tidy # 更新依赖文件
go mod download # 下载依赖文件
go mod vendor # 将依赖转移至本地的vendor文件
go mod edit # 手动修改依赖文件
go mod graph # 打印依赖图
go mod verify # 校验依赖
版权声明本文仅代表作者观点,不代表本站立场。本文系作者授权发表,未经许可,不得转载。图文来源网络,侵权删!