Golang包管理
go包管理
历史
gopath
go 1.5版本之前
-
GOPATH
- src 存放源代码
- pkg存放编译后的文件
- bin存放编译后的可执行文件
-
通过统一包存放的路径来进行管理
-
不支持依赖包的版本控制
-
gopath模式下工程代码必须放在GOPATH/src下
-
go get将远程代码克隆到GOPATH/src目录下 -
go install将二进制文件保存到GOPATH/bin目录下 添加-d只下载不安装,若是普通包则会生成.a结尾的文件放到GOPATH/pkg下
go Vendor
go 1.5版本及以后
- 将源码拷贝到vendor目录并维护vendor.js文件 指定版本
- 使用
- 安装
go get -u github.com/kardianos/govendor - 初始化
govendor init - 将依赖包加入到vendor目录
govendor add +external - 移除依赖
govendor remove +unused
- 安装
- 缺点依赖不能重用,会造成冗余
go Modules
go 1.11版本及以后
- 使用
go mod initgo mod tidygo mod download卸载依赖包到本地go mod vendor兼容vendor
- go.mod
module使用仓库代码,直接改成github链接go 1.20最低支持版本require直接依赖包indirect只会导入间接依赖包中没有go.mod的依赖,并且会生成伪版本号(版本号-UTC提交时间-commit哈希)
- go.sum
- 触发项目编译后生成
- 直接,间接依赖的所有包
- 同样的包数据只会缓存一份,所有其他模块共享使用,可以使用
go clean -modcache来清除缓存 - 不对依赖包做hash校验的情况
- GOPRIVATE匹配到的包
- 打包到vendor目录的包
- GOSUMDB 设置为off 都不会做校验
本文来自博客园,作者:肆月初陸丶,转载请注明原文链接:https://www.cnblogs.com/zarttic/p/18013424

浙公网安备 33010602011771号