# Go语言的依赖管理 | 青训营笔记

55 阅读1分钟

一、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后缀)