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 init
go mod tidy
go 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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!