Go构建模式:GOPATH、vendor、Go Module

GOPATH构建模式

GOPATH默认路径是$HOME/go
GOPATH构建模式下,编译器会在GOPATH路径下搜索第三方模块,不关心第三方包版本。为了可重构,引入了vendor机制。

Go Module构建模式(推荐)

通过环境变量GO111MODULE设置为on打开Go Module构建模式(Go 1.11版本引入此模式)。
创建Go Module,需要三步:
1、执行go mod init 创建 go.mod 文件,初始化项目。
2、执行go mod tidy 命令自动更新当前module的依赖信息。
3、执行 go build,构建module。
Go Module采用语义导入版本 (Semantic Import Versioning),以及和其他主流语言不同的最小版本选择 (Minimal Version Selection) 等机制。

添加依赖

go get github.com/google/uuid

执行命令会下载依赖到本地module缓存里,并在 go.mod 文件的 require 段中新增一行依赖内容。
也可以用批量处理的方式go mod tidy,自动把源码里的依赖下载下来。

升级 / 降级依赖的版本

降级:

$go get github.com/sirupsen/logrus@v1.7.0
go: downloading github.com/sirupsen/logrus v1.7.0
go get: downgraded github.com/sirupsen/logrus v1.8.1 => v1.7.0

上面命令下载了v1.7.0版本,并把依赖项从 v1.8.1 降至 v1.7.0版。
还可以用edit和tidy结合使用,实现同样功能:

$go mod edit -require=github.com/sirupsen/logrus@v1.7.0
$go mod tidy       
go: downloading github.com/sirupsen/logrus v1.7.0

升级:


$go get github.com/sirupsen/logrus@v1.7.1
go: downloading github.com/sirupsen/logrus v1.7.1
go get: upgraded github.com/sirupsen/logrus v1.7.0 => v1.7.1

添加主版本号大于 1 的依赖


$go get github.com/go-redis/redis/v7
go: downloading github.com/go-redis/redis/v7 v7.4.1
go: downloading github.com/go-redis/redis v6.15.9+incompatible
go get: added github.com/go-redis/redis/v7 v7.4.1

通过语义导入版本机制,执行 go get 获取redis的v7版本。

移除依赖

在代码里把对应包导入代码移除,go mod tidy命令将依赖项彻底移除掉依赖项。

使用vendor

# 在vendor目录下创建依赖包副本
# 用vendor/modules.txt记录依赖包及版本
go mod vendor

# Go 1.14之后,默认也是vendor模式构建
go build -mod=vendor 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小龙在山东

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值