GO语言进阶与依赖管理(四)|青训营笔记

60 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天

一、本堂课重点内容:

- 依赖管理

二、详细知识点介绍:

- 依赖管理

2.3.5 依赖分发——回源

软件包依赖需要从网络上下载,下面是一个依赖分发的模式:

image.png

上图模式的问题:

  • 无法保证构建稳定性

若依赖源增加/修改/删除软件版本,则无法保证其在已有的项目中不出现冲突。

  • 无法保证依赖可用性

依赖源可能被删除。

  • 增加第三方压力

代码托管平台无法承载如此大的负载。

2.3.5 依赖分发——Proxy

基于以上问题,出现了Proxy。

Proxy是一个服务站点,它会缓存原站中的软件包版本,即使其被删除或改变仍然会保留之前的版本。

下面是使用Proxy的分发模式:

image.png

2.3.6 依赖分发——变量GOPROXY

GO Mod 通过GOPROXY环境变量控制Proxy的配置。

image.png

如上图,依赖首先从Proxy1中寻找,若Proxy1中不存在则在Proxy2中寻找,若仍不存在则在原站中下载。

2.3.7 工具——go get

下图为go get的一些常用用法。

image.png

从网络上搜寻的较为完整的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的一些常用用法。

image.png

从网络上搜寻的较为完整的go mod用法:

格式:go mod <command> [arguments]

commands:

  • download:下载依赖包
  • edit:编辑go.mod
  • graph:打印模块依赖图
  • verify:在当前目录初始化mod
  • tidy:拉取缺少的模块,移除不用的模块
  • vendor:将依赖复制到vendor下
  • verify:验证依赖是否正确
  • why:解释为什么需要依赖

三、引用参考: