一、go mod概念及主要功能
go mod 是Go语言的依赖管理工具,很大程度上简化了依赖的管理。
在 Go Module出现之前,Go语言的依赖管理方面已经推出了GOPATH和vendor,它的出现解决了GOPATH无法让多个项目共享同一个package的不同版本和vendor无法很好的管理依赖的package等问题。
究其核心它解决了以下重要问题:
- 版本管理和依赖冲突
- 依赖下载和缓存
- 依赖的版本锁定
通常一个仓库包含一个或多个module(不推荐多个),每个module包含一个或多个package,每个package包含一个或多个源文件。
二、其他语言的依赖管理工具
相比于Go语言,java语言使用Maven等工具管理依赖,有明确的依赖声明和版本控制。Python语言使用pip等工具管理依赖,也有Pipfile等文件声明依赖关系。PHP使用Composer来管理依赖,通过composer.json文件声明依赖关系。
三、go.sum和go.mod
go.mod主要用于描述模块信息和依赖关系,是项目开发者直接编辑和维护的。
go.sum则是自动生成的文件,记录了具体版本和哈希值,以保证构建时的版本一致性和安全性。
这种分离的设计使得go.mod文件可以灵活地修改和更新以来信息,而go.sum文件则保证了每次构建时使用的确切依赖版本和安全性。