golang(1) go module 依赖包管理

go module

go module 是Go1.11版本之后官方推出的版本管理工具。并且从Go1.13版本开始,go module 将成 Go语言默认的依赖管理工具。

官方文档

https://github.com/golang/go/wiki/Modules

开启go module

首先设置环境变量 GO111MODULE , 通过它可以开启和关闭模块的支持,它有三个值 on, off, auto 默认是auto

  1. GO111MODULE=off禁用模块支持,编译时会从GOPATHvendor文件夹中查找包。
  2. GO111MODULE=on启用模块支持,编译时会忽略GOPATHvendor文件夹,只根据 go.mod下载依赖。
  3. GO111MODULE=auto,当项目在$GOPATH/src外且项目根目录有go.mod文件时,开启模块支持。

我们把它设置为on go env -w GO111MODULE=on ,之后就可以使用 go module 了 。以后就没有必要在 $GOPATH/src 中创建项目了。并且还能够很好的管理项目的第三方依赖。

**Go PROXY 换成中国代理 **

使用 go module 模式 , 会在项目的根目录下生成两个文件 go.modgo.sum

go.mod

Go.mod 文件记录了项目所有的依赖信息。

module blogger

go 1.16

require (
    github.com/go-sql-driver/mysql v1.4.1
    google.golang.org/appengine v1.6.1 // indirect
)
  • module 用来定义包名
  • Require 用来定义依赖包以及版本
  • Indirect 表示间接引用

go.sum

记录是每个依赖库的版本和哈希值用于验证安全和修改

项目中的基本使用

cd. ~/xxx/yyy/test
#初始化项目
go mod init test(test是项目的名称,名字可以随便)
# 下包
go get github.com/go-redis/redis 
go get github.com/go-sql-driver/[email protected]

go mod 命令

go mod download    下载依赖的module到本地cache(默认为$GOPATH/pkg/mod目录)
go mod edit        编辑go.mod文件
go mod graph       打印模块依赖图
go mod init        初始化当前文件夹, 创建go.mod文件
go mod tidy        增加缺少的module,删除无用的module
go mod vendor      将依赖复制到vendor下
go mod verify      校验依赖
go mod why         解释为什么需要依赖

go get

在项目中执行 go get 命令可以下载依赖包,并且还可以下载指定的版本

  1. 运行go get -u将会升级到最新的次要版本或者修订版本(x.y.z, z是修订版本号, y是次要版本号)
  2. 运行go get -u=patch将会升级到最新的修订版本
  3. 运行go get package@version将会升级到指定的版本号version

如果下载所有的依赖可以使用 go mod download命令

go tidy

运行 go tidy ,可以删除项目里没有用的依赖包

godep

在Go1.5 release的版本的发布vendor目录被添加到除了GOPATH和GOROOT之外的依赖目录查找的解决方法。 查找依赖包路径的解决 当前包下的vendor目录 先上级的目录查找,直到找到scr的vendor目录 在GOPATH下面查找依赖包 在GOROOT目录下查找

dep安装方式的安装方式是:执行

curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh

go get github.com/tools/godep 
# 要自己设置环境变量

//todo

参考:

https://cloud.tencent.com/developer/article/1438252

https://www.liwenzhou.com/posts/Go/go_dependency/

你可能感兴趣的:(golang(1) go module 依赖包管理)