Go语言依赖管理经历了几种工具,目前主流的是Go Modules
Go Modules自Go 1.11版本引入,通过go.mod文件管理依赖。主要特点如下
1. 初始化go.mod
在项目目录下执行`go mod init`生成go.mod文件,定义模块路径。
2. 记录依赖
执行`go get`会自动把依赖写入go.mod和go.sum。
3. 升级依赖
使用`go get package@version`可以升级依赖。
4. 使用依赖
不需要显式导入go.mod中的依赖,Go会自动引入。
5. 去掉未使用的依赖
`go mod tidy`可以删除未使用的依赖。
6. 版本选择
默认使用最新版本,可以通过`go get package@version`选择版本。
7. 引入本地包
使用replace指令可以引入本地包。
8. exclude和replace排除依赖
可用exclude排除不需要的包,replace注入 fork的包。
9. 提交依赖
只提交go.mod和go.sum文件,不提交vendor文件夹。
Go Modules实现了语义化版本管理、可重现的构建,是Go语言依赖管理的未来方向。
还有些补充的内容
1. 与GOPATH的关系
启用Go Modules后,会忽略GOPATH,不再以其来查找和下载依赖。Go Modules可以与GOPATH共存。
2. 模块代理
可以配置GOPROXY来指向代理,用于在企业环境下控制访问。
3. vendor目录
go mod vendor可以将依赖复制到vendor目录,用于隔离网络环境。
4. 语义化版本
Go Modules要求依赖使用语义化版本号,如v1.2.3。
5. 兼容性
低于Go 1.11的版本需要设置环境变量GO111MODULE=on来启用模块支持。
6. go.mod文件语法
go.mod使用特定语法记录模块路径、依赖关系、替换等信息。
7. go mod命令
go mod download/tidy/verify等命令可以管理模块缓存和依赖。
以上是Go Modules的更多高级用法,如版本控制、私有仓库配置、命令使用等方面。这有助于更全面地理解Go语言的依赖管理。