8 Go的包管理
8.1 历史
go get => vendor => go modules
◆ go get无版本概念
◆ vendor曲线救国,但仍未版本化
◆ go1.11 modules开启版本依赖新大门
详细过程推荐阅读
8.2 Go modules
通过GO 1.11 MODULE环境变量来开启或者关闭,默认是auto
◆ off/on/auto
关闭,开启,自动识别
◆ 使用module后,GOPATH失去了部分意义
◆ 要用module ,第一步将项目从GOPATH中移出去
8.3 go.mod 文件
go.mod文件来管理依赖,定义模块依赖
◆ go.mod文件放在项目根目录
◆ go.mod文件面向行,由指令+参数组成
◆ 注释使用//
8.3.1 go.mod 主要指令
◆ module:定义当前模块和包路径
◆ require: 定义依赖的模块和版本
◆ exclude: 排除特定模块和版本的使用
◆ replace:模块源的替换
8.3.2 go.mod 命令
go.mod文件用go mod命令来创建和维护
◆ 命令格式
go mod <命令> [可选参数]
◆ 8个子命令
- init ,tidy,vendor,verify
- download,edit,graph ,why
8.3.3 实战演示
8.3.3.1 使用go mod init 创建和初始化go.mod文件
go mod init javaedge.com/GoDemo
生成文件
8.3.3.2 go get命令下载和更新依赖包
如果移除依赖,使用go build也能导入
8.3.3.3 tidy子命令更新模块依赖
对于已存在项目进行module化,即可使用该命令
会自动添加依赖的包,使用go build更新依赖
8.3.3.4 replace子命令更新模块依赖
格式
replace包路径[版本] =>包路径版本
golang.org/x/sys => github.com/golang/sys
当执行如下命令时,发现报错
于是我们在mod文件中使用replace替换url路径即可
replace( golang.org/x/crypto => github.com/golang/crypto latest golang.org/x/sys => github.com/golang/sys latest )