• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

gomod生成vendor

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

go mod可以使项目从GOPATH的强制依赖中独立出来,也就是说你的项目依赖不再需要放在在GOPATH下面了,每个工程的依赖包、版本可由当前工程独立管理!

 

  • GO111MODULE
  • GO111MODULE有三个值:off, on和auto(默认值)。
  • GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
  • GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
  • GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:

当前目录在GOPATH/src之外且该目录包含go.mod文件
当前文件在包含go.mod文件的目录下面。

mod操作记录

export GO111MODULE=on

go mod init github.com/mutex73/ga

 

go.mod如何在项目中使用?
1.首先我们要在GOPATH/src 目录之外新建工程,或将老工程copy到GOPATH/src 目录之外。

PS:go.mod文件一旦创建后,它的内容将会被go toolchain全面掌控。go toolchain会在各类命令执行时,比如go get、go build、go mod等修改和维护go.mod文件。

go.mod 提供了module, require、replace和exclude四个命令

module语句指定包的名字(路径)
require语句指定的依赖项模块
replace语句可以替换依赖项模块
exclude语句可以忽略依赖项模块

  

go mod init + 模块名称 初始化模块

即go mod init hello

  

运行完之后,会在当前目录下生成一个go.mod文件,这是一个关键文件,之后的包的管理都是通过这个文件管理。

官方说明:除了go.mod之外,go命令还维护一个名为go.sum的文件,其中包含特定模块版本内容的预期加密哈希 
go命令使用go.sum文件确保这些模块的未来下载检索与第一次下载相同的位,以确保项目所依赖的模块不会出现意外更改,无论是出于恶意、意外还是其他原因。 go.mod和go.sum都应检入版本控制。 
go.sum 不需要手工维护,所以可以不用太关注。

注意:子目录里是不需要init的,所有的子目录里的依赖都会组织在根目录的go.mod文件里

 

export GO111MODULE=on

1、go mod init newapp

可以手动增加依赖go.uber.org/atomic v1.4.0或者让go自动发现和维护,下面build中会自动发现依赖包

2、go build main.go

vendor_test.go文件中增加了import "go.uber.org/zap"的语句,IDE提示报错,执行build后依赖包记录在go.mod中

 

 

 

3、go mod download

依赖包会自动下载到$GOPATH/pkg/mod,多个项目可以共享缓存的mod

 

 

4、go mod vendor

从mod中拷贝到项目的vendor目录下,这样IDE就可以识别了!

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
使用 GoLand 启动 运行 Go 项目发布时间:2022-07-10
下一篇:
go sync.once用法发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap