一文详解go|一文详解go mod依赖管理详情
目录
- 1. go的依赖管理发展
- 2. go.mod 文件分析
- 3. go mod依赖下载工具
- 4. 可能出现的问题汇总
1. go的依赖管理发展
文章图片
- GOPATH 所有的依赖都放置在同一路径下,可以复用下载的依赖,但是当不同项目需要依赖不同版本的依赖时,就很容易出现冲突问题。
- govendor 解决了依赖库版本不一致的问题,但是不好控制(了解即可)
- go mod 使用go.mod文件管理以来的版本,通过go get下载依赖
2. go.mod 文件分析
module xx/xx/xx/v2go 1.16require (xx/xx/xx v1.3.3xx/xx/xx v0.0.0-20200330080233-e4ea8bd1cbed xx/xx/xx v2.2.1+incompatible xx/xx/xx v0.3.0 // indirect)exclude ( xx/xx/xx v1.3.3-rc.0)replace xx/xx/xx => xx/xx v1.3.3retract (v1.0.0 // 废弃的版本,请使用v1.1.0)
module xx/xx/xx/v2
是指该项目的module路径,/v2
是指版本信息,可以省略。【一文详解go|一文详解go mod依赖管理详情】
go 1.16
是指项目需要的最低go的版本require()是项目需要的其他依赖:
xx/xx/xx v1.3.3
指明了项目需要的依赖以及版本号。xx/xx/xx v0.0.0-20200330080233-e4ea8bd1cbed
是时间戳性质的版本号。xx/xx/xx v0.3.0 // indirect
是指依赖需要的依赖xx/xx/xx v2.2.1+incompatible
是指依赖的库的major版本大于引用的版本,不合规范。
exclude()
指引用依赖时,跳过某些版本replace xx/xx/xx => xx/xx v1.3.3
指替换某些依赖retract()
声明废弃的版本3. go mod依赖下载工具 go get xx/xx/x@${parameter}
${parameter}可以选择的参数如下:
文章图片
go mod tidy 根据go.mod文件添加或者删除项目所需要的依赖
4. 可能出现的问题汇总 go get -u xx/xx/x
这个操作会升级依赖的依赖,有可能会引发依赖版本不兼容问题导致的编译不通过,比如thrift的0.13与0.14不兼容。
循环依赖问题:
文章图片
要注意避免循环依赖问题。
到此这篇关于一文详解go mod依赖管理详情的文章就介绍到这了,更多相关go mod依赖管理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- Go|Go 语言 json解析框架与 gjson 详解
- 一文详解MySQL|一文详解MySQL Binlog日志与主从复制
- 一文读懂自动泊车的自动化等级丨曼孚科技
- 工作心得体会|【JAVA 】 23种设计模式详解
- Amedeo|Amedeo Modigliani|阿美迪欧·莫蒂里安尼,英年早逝的天才艺术家
- 笔记|require.context()的用法详解
- mysql有类似dbms_output.pu_line();_使用MySQL,SQL_MODE有哪些坑,你知道么()
- 微信小程序(黑马)|【微信小程序】一文读懂,数据请求
- 微信小程序|【小程序】一文读懂微信小程序登录流程及获取手机号
- 微信小程序|【微信小程序】一文读懂小程序的生命周期和路由跳转