Golang从入门到进阶系列:Go Modules机制

Damion · · 1548 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Go Modules机制是Go官方的包管理机制,从Go 1.11开始作为experiment feature引入,GO111MODULE是这个特性的开关。

GO111MODULE

GO111MODULE有三个值:autoonoff,默认值为autoGO111MODULE的值会影响Go compiler的依赖管理模式

  • off:go compiler会始终使用GOPATH mode,无论要构建的源码目录是否在GOPATH路径下,go compiler都会在传统GOPATHvendor目录下,搜索目标程序依赖的go package
  • on:go compiler会始终使用module-aware mode,无论要构建的源码是否位于GOPATH路径下,go compiler都会在go mod命令的缓存目录$GOPATH/pkg/mod下搜索对应版本的依赖package
  • auto:使用GOPATH mode还是module-aware mode,取决于要构建的源码目录是否位于$GOPATH/src为根的目录体系下,且是否包含go.mod文件

go mod命令

golang使用go mod命令来实现包的管理

go mod命令说明:

命令 说明
download download modules to local cache
edit edit go.mod from tools or scripts
graph print module requirement graph(打印模块依赖图)
init initialize new module in current directory
tidy add missing and remove unused module
vendor make vendored copy of dependencies
verify verify dependencies have expected content
why explain why packages or modules are needed

go mod命令使用:

  1. 执行命令go mod init,会在当前目录下生成一个go.mod文件。执行这条命令之前,但其那目录如果已经存在go.mod文件,需要先删除
  2. 如果生成的go mod文件不完整,则继续执行go mod tidy命令,它会添加缺失的模块以及移除不需要的模块,执行后会生成go.sum文件
  3. 执行go mod verify来检查当前模块的依赖是否全部都下载完毕,以及下载之后是否被修改,如果依赖没有问题,则会打印all modules verified
  4. 执行命令go mod vendor生成vendor目录,该目录下存放的是go.mod文件描述的依赖包,以及一个modules.txt

go mod相关文件

执行命令go mod init以及go mod tidy之后,会生成两个文件,分别为:

  • go.mod:包含模块名称、go的版本、该模块的依赖信息
  • go.sum:模块所有依赖的校验和

有疑问加站长微信联系(非本文作者)

本文来自:掘金

感谢作者:Damion

查看原文:Golang从入门到进阶系列:Go Modules机制

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1548 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传