写在前面
在一个项目文件里,我们会发现有一个go.mod文件,实际上,go.mod是Go管理第三方的依赖的一种方式,本文让我们探究Go的依赖管理相关知识。
GOPATH
GOPATH是Go使用的一个环境变量,GOPATH可以理解为是Go的工作空间。GOPATH目录有bin、pkg、src三个目录。 在GOPATH目录下可以存放Go的源码、Go的可运行文件和包文件,使用GOPATH的项目代码直接依赖的是src下的代码。并且存在以下几个问题
- 第三方包和自己项目中的包都在src目录下,项目十分混乱。
- 第三方包没有版本的概念,无法实现package的多版本控制
- 在多成员协作开发的情境下,需要统一各个开发人员GOPATH的src目录中的依赖
Go Module
为了解决GOPATH在开发过程中带来的种种不便,方便开发人员进行包管理,引入了Go Module机制。 Go Module的核心是一个go.mod的文件,其依赖管理包括了用来描述依赖的配置文件、中心仓库管理依赖库和本地工具
- 初始化模块
- 首先创建一个文件夹作为项目的工作目录,然后让我们初始化模块,通过“go mod init 模块名”命令来进行模块的初始化,执行完该命令之后,会在工作目录下产生一个go.mod文件
- 生成go.mod会包含基本信息---模块名和版本号
-
module test go 1.20
-
- 依赖配置
- 关键词
- module 声明了module的名称
- require 声明了依赖
- indirect表明了间接依赖
- exclude表明禁用某依赖
- Go命令行工具是可以根据go.mod指定的模块和版本来下载对应版本的依赖模块。当项目代码里import的第三方依赖并不在go.mod中,Go命令行会自动寻找包并添加到go.mod中。
- 关键词
- 依赖分发
- 为了保证构建的稳定性和依赖可用性,使用依赖分发代理模式
- 通过设置GOPROXY来设置代理服务站点URL列表
- 依赖分发具有稳定、可靠的特点
- 基本流程
- 首先使用“go mod init 模块名”来初始化模块,并自动生成go.mod文件
- 使用go build等命令构建项目
- go get 来添加或修改依赖项
- go mod tidy来移除掉没有被用到的依赖
总结
第三方依赖管理是我们开发过程中大概率绕不过的话题,一个好的依赖管理工具对于提高项目的开发效率是十分重要的,这将让开发人员能够将更多的精力投入到主要功能的实现上。Go Module对于Go项目的依赖管理是十分方便的,因此了解相关的配置能够大大提高我们的开发效率。