Go Package 管理发展史
Go 依赖管理是通过 Git 仓库模式实现,并随着版本的更迭已经逐渐完善
- GOPATH 模式
GOPATH 目录是所有工程的公共依赖包目录,所有需要编译的 go 工程的依赖包都放在 GOPATH 目录下。 - Vendor 特性
为了解决 GOPATH 模式下,多个工程需要共享 GOPATH 目录,无法适用于各个工程对于不同版本的依赖包的使用,不便于更新某个依赖包。 go 1.6 之后开启了 vendor 目录。 - Go Module 包管理
从 Go1.11 以后开始支持 Module 依赖管理工具,从而实现了依赖包的进行升级更新,在 Go1.13 版本后默认打开。
GOPATH 环境变量
GOPATH 为 Go 开发环境时所设置的一个环境变量。
历史版本的 go 语言开发时,需要将代码放在 GOPATH 目录的 src 文件夹下。go get 命令获取依赖,也会自动下载到 GOPATH 的 src 下。
go get github.com/foo/bar
会将代码下载到 $GOPATH/src/github.com/foo/bar
GOPATH 具体结构如下,必须包含三个文件夹,具体如下图所示:
GOPATH
|── bin // 编译生成的二进制文件
|── pkg // 预编译文件,以加快程序的后续编译速度
|── src // 所有源代码
├── github.com
…
Using Go Modules
GO Modules 是从 Go 1.