前言
Go语言项目通过GoMod管理依赖
准备工作
开启GoMod管理项目依赖
通用
1
| go env -w GO111MODULE=on
|
Windows
MacOS
初始化项目
- 在项目根目录下,通过
go mod init
初始化项目,将项目的依赖交由go mod
管理
<project_name>
:指定项目名。项目名与真实路径名无关。项目名通常由域名/项目名/模块名
构成。如果没有指定项目名,会自动根据当前目录结构生成项目名
1
| go mod init <project_name>
|
- 此时会在项目根目录下生成
go.mod
和go.sum
两个文件,go.mod
文件用于定义项目中引用的依赖,go.sum
文件用于校验依赖的完整性以及是否被篡改
包含这两个文件的项目表示交由go mod
管理项目依赖
不包含这两个文件的项目表示不交由go mod
管理项目依赖
在使用Git管理项目时,推荐将go.mod
和go.sum
文件都交给Git管理
将项目域名指向本地(可选)
- 如果项目中有多个模块,在本地开发时需要将其他模块的项目域名指向本地
因为Go语言中模块间的引用都是通过域名的方式(云的方式),而本地项目还没有推送到云,所以在开发本地项目时需要先手动指定当前项目映射为本地路径
<src>
:当前项目根目录所在的本地绝对路径
go.mod1 2
| require <project_name> v0.0.0 replace <project_name> => <src>
|
引入依赖
手动引入依赖
github.com/xxx/xxx
:依赖包全称
v0.0.0
:依赖包版本号
go.mod1 2 3
| require ( github.com/xxx/xxx v0.0.0 )
|
自动引入依赖
所谓引入到项目,其实就是自动在go.mod
文件中添加一行配置
此操作类似于npm
github.com/xxx/xxx
:依赖包全称
v0.0.0
:依赖包版本号,如果不指定自动引入最新版本
1
| go get github.com/xxx/xxx v0.0.0
|
仅下载依赖
自动更新依赖
- 此操作会检查项目中已经引入的所有依赖,检测本地是否已下载,如果未下载,则重新下载到本地
通常用于没有下载依赖的旧项目重新下载依赖
踩坑
- 在IDEA中执行了
go mod tidy
命令后,此时有可能引用了依赖的代码还是报错,需要双击目录列表的External Libraries/Go Modules
,查看一下下载得到所有依赖的包,然后代码就不会报错了
编译依赖
- 某些Go项目的使用通常时使用可执行文件而不是将依赖引入项目,为了使用这些项目的可执行文件,只需要直接编译依赖得到可执行文件即可
校验依赖
打印依赖图
手动编辑依赖
将依赖移动到vendor目录下
完成
参考文献
哔哩哔哩——开心学Tymon
哔哩哔哩——弯曲的一条虫
哔哩哔哩——地鼠文档