GoGo语言实践

说一说go mod

2019-10-19  本文已影响0人  xcrossed

[toc]

说一说go mod

写在前面,我们要切换到go mod吗

go mod是官方力推的go模块依赖管理的工具,有官方的背书,肯定是要用的。go1.13已经默认支持了,所以迟早要切到go mod, 势不可挡。

go mod能做什么

go mod能管理的依赖包的版本,能保证在不同地方构建,获得的依赖模块是一致的。

没有go mod之前如何管理包依赖

没有go mod之前,有go deps, vendor等方法来解决。

go mod如何工作

export GO111MODULE=off  #关闭go mod
export GO111MODULE=on   # 开启mod
export GO111MODULE=auto # GOPATH/src不启用,但是还要看当前目录或者上级目录是否存在go.mod,go.sum,如果存在,则启用go mod

这里面有个坑,就是设置为auto的时候并且在GOPATH/src下,如果该目录或者父目录存在go.mod, go.sum文件,则go mod也是启用的

切换到go mod可能遇到的问题

export GOPROXY=https://mirrors.aliyun.com/goproxy/ #设置拉取的代理 
export GOPROXY=file://本地路径  # 也可以从本地加载

可下面的命令下载指定的版本

如果发现编译不过,可以通过下面命令列出指定mod的版本,然后go get拉指定版本号的包
go list -m -versions rsc.io/sampler
go get rsc.io/sampler@v1.3.1

1.13可以彻底不要GOPATH了


* go mod init # 初始化当前目录为模块根目录,生成go.mod, go.sum文件
* go mod download # 下载依赖包
* go  mod tidy #整理检查依赖,如果缺失包会下载或者引用的不需要的包会删除
* go mod vendor #复制依赖到vendor目录下面
* go mod 可看完整所有的命令

go mod虽好,但是费开发者的电脑磁盘,go mod拉下的包都会放 当前目录的pkg/mod目录下面, 意味着不同项目引用相同的包会重复下载,不像java的maven本地一个集中的目录,不重复下载。

更详细的说明可以看官方blog关于go mod的说明
https://blog.golang.org/using-go-modules

上一篇 下一篇

猜你喜欢

热点阅读