Go Module 的版本管理文件
go.mod 文件
go.mod 文件中记录了当前项目中所有依赖包的相关信息,声明依赖的格式如下:
require module/path v1.2.3 // require:声明依赖的关键字 // module/path:依赖包的引入路径 // v1.2.3:依赖包的版本号。支持以下几种格式: // latest:最新版本 // v1.0.0:详细版本号 // commit hash:指定某次commit hash
引入某些没有发布过 tag 版本标识的依赖包时,go.mod 中记录的依赖版本信息就会出现类似 v0.0.0-20210218074646-139b0bcd549d 的格式,由版本号、commit 时间和 commit 的 hash 值组成
go.sum 文件
用go module下载了依赖后,项目目录下还会生成一个go.sum文件,这个文件中详细记录了当前项目中引入的依赖包的信息及其hash 值。go.sum文件内容通常是以类似下面的格式出现
<module> <version>/go.mod <hash> 或 <module> <version> <hash> <module> <version>/go.mod <hash>不同于其他语言提供的基于中心的包管理机制,例如 npm,Go 并没有提供一个中央仓库来管理所有依赖包,而是采用分布式的方式来管理包。为了防止依赖包被非法篡改,Go module 引入了go.sum 机制来对依赖包进行校验
依赖保存的位置
Go module 会把下载到本地的依赖包会以类似下面的形式保存在 $GOPATH/pkg/mod 目录下,每个依赖包都会带有版本号进行区分,这样就允许在本地存在同一个包的多个不同版本
mod ├── cache ├── cloud.google.com ├── github.com └──q1mi ├── hello@v0.0.0-20210218074646-139b0bcd549d ├── hello@v0.1.1 └── hello@v0.1.0 ...如果想清除所有本地已缓存的依赖包数据,可以执行 go clean -modcache 命令
