Go的依赖管理
Go依赖管理
Go的依赖管理经历了3个阶段,由于历史原因,目前普遍使用的是Go mod做依赖管理
但是了解过去的依赖管理的优缺点,便于我们理解Go mod的设计
第一阶段:
Go Path阶段:使用简单,但是由于Go Path的依赖管理只是根据路径来做区分,无法做多版本管理
因此多个项目如果依赖同一个软件的多个版本,那么Go Path就无能为力了,多个项目无法共享同一个Go Path
第二阶段:
Vendor阶段:解决了Go Path的项目依赖隔离,项目编译时,优先从vendor目录寻找依赖,找不到才从Go Path中寻找,且不便于依赖升级,仍未解多项目共享Go Path
第三阶段:
Go Module阶段:解决了上几个时代的遗留问题,并提出几个新概念
仓库:一个或多个module的集合
module:一组package的集合
package:一个或多个源文件的集合
module的版本号遵循语义化规范,即版本号有v(majior).(minor).(patch),如v0.1.0,v1.2.3格式等
且官方提供了命令go mod来操控和管理Go Module,类似maven提供了mvn操控命令
Go.mod文件
go.mod是go项目的模块文件,用于定义模块名,依赖项,版本等
其中字段含义如下:
module:定义当前项目的模块路径
go:定义go使用的版本
require:列出当前模块的依赖及其版本
replace:指定依赖的代替版本