GoLang——依赖管理
为什么需要依赖管理
在早前版本重,Go语言所依赖的第三方库都存放在 GOPATH 目录下,导致第三方库版本可能会发生冲突,故引入依赖管理使得第三方库的引入更加便于开发者的使用
go module
go module
是 v1.11 版本后推出的版本管理工具,从 v1.13开始,go module
是默认的版本管理工具
启用 go module
需要将 GO111MODULE
设置为 on
或者 auto
-
off
:禁用模块支持,编译时会从 GOPATH 和 Vender 文件夹中查找包 -
on
:启用模块支持,编译时会忽略 GOPATH 和 Vender 文件夹,只通过 go.mod 下载相关依赖和第三方库 -
auto
:当项目在 GOPATH/src 外并且项目中存在 go.mod 文件,则启用 go module 模块支持,否则禁用
注意:
-
go module
管理的项目不能在 GOPATH 目录下,否则会使用其他项目已有的包管理工具
-
使用
go module
后会在项目根目录下生成两个文件 go.mod 和 go.sum
go mod 命令
-
go mo download
:下载依赖的 module 到本地 cache(cache可以通过go env
查看,默认为 GOPATH/pkg/mod) -
go mod init
:初始化当前项目,创建 go.mod 文件 -
go mod tidy
:增加缺少的 module,删除没有用的 module -
go mod verify
:根据 go.sum 文件校验依赖
go.mod 文件
go.mod 文件记录了项目所有的依赖信息,常见的关键字:
-
module
:声明 module 名称 -
require
:声明依赖及版本号 -
replace
:替换 require 中声明的依赖
-
exclude
:禁用指定依赖 -
indirect
:表示间接依赖
go.sum 文件
go.sum 文件中每行记录由包名、版本号、哈希值组成,用空格分隔
go.sum 文件是为了实现构建一致性
go mod init
在项目中使用 go module,只需要在项目目录下执行 go mod init
,生成一个 go.mod
文件