当前位置:   article > 正文

Go mod使用:_"go:-mod may only be set to readly when in workspa

"go:-mod may only be set to readly when in workspace mode,but it is set to \"m"

参考原文:https://www.jianshu.com/p/c666ebdb462b

go mod 简介:
1. 诞生原因:
(1) GOPATH特性对于多工程的情况下,支持不算友好
(2) GOPATH无法对依赖包进行有效的版本管理

2. 对比vendor: 
Golang在1.11(GO111MODULE开关)版本中引入了go mod机制,统一的位置对依赖进行管理
不论你有多少个工程,只要你引用的依赖的版本是一致的,那么在本地就只会有一份依赖文件的存在。而vendor即使依赖的版本是相同的,但如果在不同的工程中进行了引用,也会在工程目录下的vendor产生一份依赖文件。

3. 依赖存放路径:GOPATH/pkg/mod

4. 是否启用:
GO111MODULE = on     →  所有的构建,都使用Module机制(若工程中存在go.mod文件,编译时是从GOPATH/pkg/mod下查找依赖)
GO111MODULE = off     →  所有的构建,都不使用Module机制,而是使用GOPATH和Vendor(编译就会从GOPATH/src下查找依赖)
GO111MODULE = auto  →  在GOPATH下的工程,不使用Module机制,不在GOPATH下的工程使用

5. 常用命令:
go mod tidy :
从 go.mod 删除不需要的依赖、新增需要的依赖,这个操作不会改变依赖版本

go get :
与以前不同的是,新版 go get 可以在末尾加 @ 符号,用来指定版本。
go get 命令需在go.mod同级目录下执行,否则会报出错误go: cannot use path@version syntax in GOPATH mode。而且在使用go get下载依赖时,要求仓库必须用 vX.Y.Z 格式打 tag。
版本号匹配规则参考转载原文~

go build -mod=vendor :
在开启模块支持的情况下(GO111MODULE = on),用这个可以退回到使用 vendor 的时代,也就是指定当前编译使用vendor依赖

go mod vendor 
将依赖包从$GOPATH/pkg/mod目录拷贝至当前项目目录下的vendor目录
解决:当使用go mod vendor指令,将依赖包全部拷贝至当前项目下后,当前项目就可以随意拷贝分发,避免因网络问题造成接收者安装依赖包的麻烦。

待补充~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/193396
推荐阅读
相关标签
  

闽ICP备14008679号