Go mod
Go mod
基础
使用 go mod
管理依赖是官方推荐的方式,可以方便地管理代码的版本和依赖。
下面是一些常见的 go mod
使用方法:
1. 初始化项目
在项目的根目录下,执行以下命令初始化 go mod
:
1
go mod init <module-name>
其中 <module-name>
是项目的模块名,通常是一个域名的反转加上项目名,例如 github.com/example-project
。
2. 添加依赖
假设你要添加一个名为 example-dependency
的依赖,你可以执行以下命令:
1
go get example-dependency
这会将 example-dependency
下载到本地,并自动更新 go.mod
文件中的依赖信息。
3. 升级依赖
你可以使用以下命令来升级项目的依赖:
1
go get -u
这会将所有依赖升级到最新版本。
4. 构建项目
使用 go build
或者 go run
命令来构建或运行项目,go mod
会自动下载依赖并构建项目。
5. 清理依赖
如果你想要清理掉不再使用的依赖,可以使用以下命令:
1
go mod tidy
这会自动删除不再使用的依赖。
除了上述基本用法之外,go mod
还支持许多其他的功能,例如指定依赖的版本、使用私有仓库等。熟悉 go mod
的使用可以提高项目的开发效率和代码的可维护性。
高级使用
1. 指定依赖版本
可以使用以下命令指定依赖的版本:
1
go get example-dependency@v1.2.3
其中 v1.2.3
是依赖的具体版本。
2. 使用代理下载依赖
如果因为某些原因无法直接从官方源下载依赖,可以使用代理来下载依赖。例如,使用 goproxy.io
作为代理:
1
go env -w GOPROXY=https://goproxy.io,direct
这会将代理地址设置为 https://goproxy.io
,如果代理无法使用,会直接从官方源下载。
3. 使用私有仓库
如果依赖不在公共仓库中,可以使用私有仓库来下载依赖。例如,使用 gitlab.com
作为私有仓库:
1
go env -w GOPRIVATE=gitlab.com
这会将 gitlab.com
设置为私有仓库,go mod
会从该仓库下载依赖。
4. 使用本地包
如果你正在开发一个本地的包或者库,可以使用以下命令将其添加到 go.mod
文件中:
1
go mod edit -replace example-package=../example-package
其中 example-package
是本地包的名称,../example-package
是本地包的路径。
5. 禁止自动更新依赖
如果你想要禁止自动更新依赖,可以在 go.mod
文件中添加以下内容:
1
2
3
4
go 1.16
...
go 1.17
...
这会锁定 Golang 的版本,禁止自动更新。
go.mod 使用
1
2
3
4
5
6
7
8
9
10
11
12
13
replace (
source latest => target latest
)
require (
dependency latest
)
retract (
v0.1.0
v0.2.0
)
- requirere:记录了项目依赖的库和版本号
- replace:用于指定模块的替换品(通常是本地路径),例如
replace example.com/old => example.com/new
表示使用本地路径example.com/new
替换所有引用example.com/old
的模块 - retract:新特性给予了 Go modules 软撤回版本的一个方法,能够把问题更直观的反馈到开发者的手中
- exclude:用于排除特定模块版本的依赖项,例如
exclude example.com/old v1.0.0
表示排除版本为v1.0.0
的example.com/old
依赖项
用于指定模块的替换品(通常是本地路径),例如 replace example.com/old => example.com/new
表示使用本地路径 example.com/new
替换所有引用 example.com/old
的模块。