- GO111MODULE
- 参考
- 解析
- 一开始发布的时候
- 一开始go发布的时候是没有包管理的
- go get命令会根据路径,把相应的模块获取并保存在$GOPATH/src
- 也没有版本的概念,`master`就代表稳定的版本
- 后来引进了Go Module
- 在GO1.11引入
- 不再是只有一个版本了
- 利用go.mod记录每个包的版本
- 于是问题就来了
- 到底是按照$GOPATH的规则走还是按照Go Module来呢?
- GO111MODULE
- 是一个环境变量,用于改变go引入包的方式
- go1.11和go1.12
- GO111MODULE=on,这个设置会强迫使用Go modules,即使项目在你的GOPATH里。需要go.mod才能工作。
- GO111MOUDLE=off,使用GOPATH的方式,即使在GOPATH外边
- GO111MODULE=auto,默认设置。
- 当你不在GOPATH内的时候,就类似GO111MODULE=on
- 当你在GOPATH内的时候,即使存在go.mod,也是GO111MODULE=off的效果
- 当你在GOPATH内,然后你需要GO modules来做一些操作的时候(如go get一个特定的版本),那就需要这么干:
- GO111MODULE=on go get xxxxx
- 1.13
- 使用Go 1.13,auto的意思改变了:
- 如果找到了go.mod,或者在没有go.mod,但是在GOPATH外,那效果就是GO111MODULE=on(强迫使用go module)。所以你可以把所有的仓库都保存在你的GOPATH
- why?
- 没有go.mod的时候,在GOPATH里,效果就是GO111MODULE=off(获取包并放在$GOPATH/src/)
- 如果找到了go.mod,或者在没有go.mod,但是在GOPATH外,那效果就是GO111MODULE=on(强迫使用go module)。所以你可以把所有的仓库都保存在你的GOPATH
- 使用Go 1.13,auto的意思改变了:
- 一开始发布的时候
GO111MODULE 环境变量
最新推荐文章于 2024-06-14 10:52:25 发布