一、Go依赖管理演进:GOPATH->Go Vender->Go Module 依赖管理的主要内容:
1、不同环境(项目)依赖的版本不同
2、控制依赖库的版本
二、GOPATH
1、环境变量$GOPATH
2、项目代码直接依赖src下的代码
3、go get 下载最新版本的包到src目录下
GOPATH-弊端:无法实现package的多版本控制
三、Go Vender
1、项目目录下增加vender文件,所有依赖包副本形式放在
2、$ProjectRoot/vender
3、依赖寻址方式:vender => GOPATH
4、通过每个项目引入一份依赖的副本,解决了多个项目需要同一个package依赖的冲突问题
Go Vender-弊端:无法控制依赖的版本;更新项目又可能出现依赖冲突,导致编译出错
四、Go Module
1、通过go.mod文件管理依赖包版本
2、通过go get/go mod指令工具管理依赖包
终极目标:定义版本规则和管理项目依赖关系
五、依赖管理三要素
1、配置文件,描述依赖 go.mod
2、中心仓库管理依赖库 Proxy
3、本地工具 go get/mod
六、依赖配置
1、语义化版本 eg. V1.3.0 V2.3.0
2、基于commit伪版本 eg. v0.0.0-202204010881311-c38fb59356b7
3、一些关键字:
(1)indirect 间接依赖
(2)incompatible 对于没有go.mod文件并且主版本2+的依赖,会+incompatible(主版本2+模块会在模块路径增加/vN后缀)