go mod 简介
golang 中 mod 的简介以及使用
GOMOD
GOROOT & GOPATH
如果没有自行设置的话,GOROOT 会取 /usr/lib/go 作为默认值,而 GOPATH 则会取 $HOME/go。
依赖管理目标:
API 稳定性和可重现构建
go_version < 1.12
go get位置:$GOPATH/src
go_version >= 1.13
go mod
GO111MODULE
$GOPATH/pkg/mod
go get : 不再循环拉取submodule子模块
go mod 使用 最小版本选择(Minimal Version Selection)算法:为每个模块指定的依赖都是可用于构建的最低版本,最后实际选择的版本是所有出现过的最低版本中的最大值。
go.mod 包含四部分:
module:
require:
replace:只能作用于当前模块的构建。
exclude:只能作用于当前模块的构建
vendor
使用 go mod vendor 只是单纯地把 go.sum 中的所有依赖下载到 vendor 目录里,如果你用它迁移 godep 你会发现 vendor 目录里的包会和 godep 指定的产生相当大的差异,所以请务必不要这样做。
使用 go build -mod=vendor 来构建项目,因为在 go modules 模式下 go build 是屏蔽 vendor 机制的,所以需要特定参数重新开启 vendor 机制。
常用指令
reference
Last updated