这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
一、本堂课重点内容:
- 依赖管理
二、详细知识点介绍:
- 依赖管理
2.3.5 依赖分发——回源
软件包依赖需要从网络上下载,下面是一个依赖分发的模式:
上图模式的问题:
- 无法保证构建稳定性
若依赖源增加/修改/删除软件版本,则无法保证其在已有的项目中不出现冲突。
- 无法保证依赖可用性
依赖源可能被删除。
- 增加第三方压力
代码托管平台无法承载如此大的负载。
2.3.5 依赖分发——Proxy
基于以上问题,出现了Proxy。
Proxy是一个服务站点,它会缓存原站中的软件包版本,即使其被删除或改变仍然会保留之前的版本。
下面是使用Proxy的分发模式:
2.3.6 依赖分发——变量GOPROXY
GO Mod 通过GOPROXY环境变量控制Proxy的配置。
如上图,依赖首先从Proxy1中寻找,若Proxy1中不存在则在Proxy2中寻找,若仍不存在则在原站中下载。
2.3.7 工具——go get
下图为go get的一些常用用法。
从网络上搜寻的较为完整的go get用法:
格式: go get [-d] [-t] [-u] [-v] [-insecure] [build flags] [packages]
参数说明:
- -d:只下载,而不执行创建、安装。
- -t:同时下载命令行指定包的测试代码(测试包)。
- -u:在线下载更新指定的模块(包)及依赖包(默认不更新已安装模块),并创建、安装。
- -v:打印出所下载的包名。
- -insecure:允许命令在非安全的scheme(如HTTP)下执行get命令。
- -fix:在下载代码包后先执行修正动作,而后再进行编译和安装,根据当前GO版本对所下载的模块(包)代码做语法修正。
- -f:忽略掉对已下载代码包的导入路径的检查。
- -x:打印输出,get 执行过程中的具体命令。
2.3.8 工具——go mod
下图为go mod的一些常用用法。
从网络上搜寻的较为完整的go mod用法:
格式:go mod <command> [arguments]
commands:
- download:下载依赖包
- edit:编辑go.mod
- graph:打印模块依赖图
- verify:在当前目录初始化mod
- tidy:拉取缺少的模块,移除不用的模块
- vendor:将依赖复制到vendor下
- verify:验证依赖是否正确
- why:解释为什么需要依赖
三、引用参考: