Go modules 是 Go 语言的依赖解决方案,发布于 Go1.11,成长于 Go1.12,丰富于 Go1.13,正式于 Go1.14 推荐在生产上使用。
Go moudles 目前集成在 Go 的工具链中,只要安装了 Go,自然而然也就可以使用 Go moudles 了,而 Go modules 的出现也解决了在 Go1.11 前的几个常见争议问题:
Go 语言长久以来的依赖管理问题。 “淘汰”现有的 GOPATH 的使用模式。 统一社区中的其它的依赖管理工具(提供迁移功能)。
gomodules 使用
开启mod和关闭:
go env -w GO111MODULE=on 会将包下载到gopath下的pkg的mod文件夹中
go env -w GO111MODULE=off 会将包下载到gopath下的src下
gomod常用命令:
查看环境设置:go env
设置顶级vendor作为依赖:go env -w GOFLAGS="-mod=vendor" 查看env 是GOFLAGS=-mod=vendor,取消:go env -w GOFLAGS="-mod=";
指定gomod编译 模式:go build -mod=vendor
go mod download下载模块到本地缓存,缓存路径是$GOPATH/pkg/mod/cache
go mod edit是提供了命令版编辑go.mod的功能,例如go mod edit -fmt go.mod会格式化go.mod
go mod graph把模块之间的依赖图显示出来
go mod init <项目模块名称>初始化模块(例如把原本dep管理的依赖关系转换过来),会在项目根目录下生成 go.mod文件
go mod tidy增加缺失的包,移除没用的包
go mod vendor把依赖拷贝到vendor/目录下
go mod verify确认依赖关系
go mod why解释为什么需要包和模块
get安装包:
go get github.com\go-sql-driver\mysql
设置代理
go env -w GOPROXY=https://goproxy.io,direct
或者:go env -w GOPROXY=https://goproxy.cn,direct