依赖管理 | 青训营笔记

41 阅读1分钟

依赖管理

①GOPATH:GOPATH 是 Go语言中使用的一个环境变量,它使用绝对路径提供项目的工作目录。

这个工作目录下有如下的文件夹:

bin-项目编译的二进制文件

pkg-项目编译的中间产物,加速编译

src-项目源码

项目代码直接依赖src下的代码,所以go get下载最新版本的包到src目录下。

这样会存在一个弊端:

场景:A和B依赖于某一packagel的不同版本。

问题:无法实现packagel的多版本控制

②所以就有了Go Vender

●项目目录下增加vendor文件,所有依赖包副本形式放在$ProjectRoot/vendor

●依赖寻址方式:vendor=>GOPATH

通过每个项目引入一份依赖的副本,解决了多个项目需要同一个package依赖的冲突问题。

但是又有了一个问题,一旦更新项目就可以出现依赖冲突

③最终,我们使用Go Moudle来进行依赖管理(1.6默认开启)

●通过go.mod文件管理依赖包版本

●通过go get/go mod指令工具管理依赖包

达成了我们的终极目标:定义版本规则和管理项目依赖关系

④依赖管理三要素:

1.配置文件,描述依赖

go.mod

2.中心仓库管理依赖库

Proxy

3.本地工具

go get/mod

⑤依赖配置-version

⑥依赖配置-indirect

A对C就是间接依赖,用indirect标识

⑦依赖配置 - incompatible

其中保证1.3和1.4是兼容版本(这里的最低应该是同时满足A和B兼容的版本的最低版本)

⑧依赖分发

⑨go工具