目录
go module简介
go modules
是 golang 1.11 新加的特性。现在1.12 已经发布了,是时候用起来了。Modules官方定义为:
模块是相关Go包的集合。modules是源代码交换和版本控制的单元。 go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。
go env 中GO111MODULE="on"表示使用go moudles
go module基本命令
- go mod download: 下载依赖的 module 到本地 cache
- go mod edit: 编辑 go.mod
- go mod graph: 打印模块依赖图
- go mod init: 在当前目录下初始化 go.mod(就是会新建一个 go.mod 文件)
- go mod tidy: 整理依赖关系,会添加丢失的 module,删除不需要的 module
- go mod vender: 将依赖复制到 vendor 下
- go mod verify: 校验依赖
- go mod why: 解释为什么需要依赖
go moudle项目本地环境搭建
- 用git从代码托管平台直接拉下来,配置好gopath,goland会自动在gopath下创建pkg文件夹,然后自动下载依赖包。
如果依赖包在gitlab私服
- 获取gitlab的access token
进入Gitlab
—>Settings
—>Access Tokens
,然后创建一个personal access token
,这里权限最好选择只读(read_repository)。
- git配置添加access token
有了access token后,我们还需要在git中进行配置,这样才能go get下了私有仓库的包,需要把刚刚的token添加进git的请求头中,操作如下:
git config --global http.extraheader "PRIVATE-TOKEN: YOUR_PRIVATE_TOKEN"
- 配置git将请求从ssh转换为http
配置如下:
git config --global url."git@gitlab.com:groupName/projectName.git".insteadOf "https://gitlab.com/groupName/projectName.git"`
也可以直接全局替换,那么可以拉取域名下的所有包,如:
git config --global url."git@gitlab.example.com:".insteadof "https://gitlab.example.com/"
如果依赖包在国外,可以设置代理
- 设置GOPROXY通过代理下载依赖:
go env -w GOPROXY="https://goproxy.io"
- 设置GOPRIVATE可以指定某些依赖不走代理:
go env -w GOPRIVATE="*.corp.example.com"