Go modules 是 Go 语言的依赖解决方案,发布于 Go1.11,成长于 Go1.12,丰富于 Go1.13,正式于 Go1.14 推荐在生产上使用。

Go moudles 目前集成在 Go 的工具链中,只要安装了 Go,自然而然也就可以使用 Go moudles 了,而 Go modules 的出现也解决了在 Go1.11 前的几个常见争议问题:

  1. Go 语言长久以来的依赖管理问题。
  2. “淘汰”现有的 GOPATH 的使用模式。
  3. 统一社区中的其它的依赖管理工具(提供迁移功能)。

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