go
GOROOTgolang/usr/local/goGOPATHSDK
Go Module
Go1.11Go Modulego.modGOPATH/pkg/mod
go buildgo.modVendor
go mod
go 1.13go modgo.mod
go mod int
go mod
go mod
go mod download 下载模块到本地缓存,缓存路径是 $GOPATH/pkg/mod/cache
go mod edit 是提供了命令版编辑 go.mod 的功能,例如 go mod edit -fmt go.mod 会格式化 go.mod
go mod graph 把模块之间的依赖图显示出来
go mod init 初始化模块(例如把原本dep管理的依赖关系转换过来)
go mod tidy 增加缺失的包,移除没用的包
go mod vendor 把依赖拷贝到 vendor/ 目录下
go mod verify 确认依赖关系
go mod why 解释为什么需要包和模块
go mod
此时可以使用 go.mod 文件中的 replace 来替换这个包
首先把项目移出$GOPATH/src目录,然后运行 go mod init module_name,最后执行 go build 即可
Go Vendor
VendorGolang1.5vendor
当前包下的 vendor 目录
向上级目录查找,直到找到 src 下的 vendor 目录
在 GOROOT 目录下查找
在 GOPATH 下面查找依赖包
go vendor
安装
go get -u -v github.com/kardianos/govendor
初始化
cd xxx
govendor init
初始化完成后,项目目录中会生成一个vendor文件夹,包含一个vendor.json文件,json文件中包含了项目所依赖的所有包信息
{
"comment": "",
"ignore": "test",
"package": [],
"rootPath": "govendor-test"
}
govendor
govendor add +external
govendor add gopkg.in/yaml.v2
govendor list -v fmt
govendor fetch golang.org/x/net/context
govendor fetch golang.org/x/net/context@a4bbce9fcae005b22ae5443f6af064d80a6f5a55
govendor fetch golang.org/x/net/context@v1 # Get latest v1.*.* tag or branch.
govendor fetch golang.org/x/net/context@=v1 # Get the tag or branch named "v1".
govendor fmt +local
govendor fetch +out
govendor update +vendor
govendor COMMAND -hgithub.com/kardianos/govendor/context
vendorvendor.json$GOPATHvendor$GOPATHvendorvendorvendor$GOPATHvendor.jsonvendorvendorgo get$GOPATHvendorgovendor
govendor 状态参数
GOPATHvendorvendorvendor+external +missing
listaddupdateremovefetch
govendor
vendorvendorvendor
Go mod vendor
vendor
go mod vendor
vendorgo modvendor