Go依赖管理 | 青训营笔记
依赖管理
GOPATH
- 项目代码直接依赖src下的代码
- go get 下载最新版本的包到src目录下 弊端: 无法实现package的多版本控制 eg: A和B都依赖于某一package的不同版本
Go Vendor
- 项目目录下增加vendor文件, 所有依赖包副本形式放在
$ProjectRoot/vendor
- 依赖寻址方式:
vendor => GOPATH
通过每个项目引入一份依赖的副本, 解决了多个项目需要同一个package依赖的冲突问题 弊端: 无法控制依赖的版本, 更新项目又可能出现依赖冲突, 导致编译出错
Go Module
定义版本规则和管理项目依赖关系
- 通过
go.mod
文件管理依赖包版本 - 通过
go get/go mod
指令工具管理依赖包
依赖管理三要素
- 配置文件, 描述依赖 -
go.mod
- 中心仓库管理依赖库 - Proxy
- 本地工具 -
go get/mod
依赖配置 - go.mod
module code // 依赖管理基本单元
go 1.20 // 原生库
require ( // 单元依赖
github.com/gin-gonic/gin v1.9.0
github.com/go-redis/redis/v8 v8.11.5
github.com/kirinlabs/HttpRequest v1.1.1
谷歌.golang.org/grpc v1.53.0-dev
谷歌.golang.org/protobuf v1.30.0
gorm.io/driver/sqlite v1.5.0
gorm.io/gorm v1.25.0
)
依赖配置 - version
- 语义化版本
${MAJOR}.${MINOR}.${PATCH}
- 基于commit伪版本
vX.0.0-yyyymmddhhmmss-abcdefgh1234
依赖配置 - indirect A->B->C
- A->B 直接依赖
- A->C 间接依赖
依赖配置 - 依赖图
最终会选择C的1.4版本, 要选择最低的兼容版本
依赖分发 - 回源
- 无法保证构建稳定性 增加 / 修改 / 删除软件版本
- 无法保证依赖可用性 删除软件
- 增加第三方压力 代码托管平台负载问题
依赖分发 - Proxy
GOPROXY="A,B,direct" 表示A和B都没能找到依赖, 则回源站寻找依赖
工具 - go get go get example.org/pkg
- @update 默认
- @none 删除依赖
- @v1.1.2 tag版本, 语义版本
- @23dfdd5 特定的commit版本
- @master master分支最新的commit
工具 - go mod go mod
- init 初始化, 创建go.mod文件
- download 下载模块到本地缓存
- tidy 增加需要的依赖, 删除不需要的依赖
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhbjaiej
系列文章
更多
同类精品
更多
-
微信小程序没声音怎么办
PHP中文网 06-15 -
excel图片置于文字下方的方法
PHP中文网 06-27 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
微信人名旁边有个图标有什么用
PHP中文网 03-11 -
微信提示登录环境异常是什么意思原因
PHP中文网 04-09 -
微信获取用户openid失败怎么办
PHP中文网 03-26 -
photoshop怎么把印章抠出并放在另一张图上
PHP中文网 06-15 -
EhViewer(E绅士)最新版_ehviewer白色版彩色版_Ehviewer显示网络错误怎么办?e站进不去了怎么办
Evanpatchouli 09-19 -
Excel筛选和排序是灰色的怎么办
PHP中文网 06-22 -
photoshop蒙版画笔没反应怎么办
PHP中文网 06-24