【问题】go mod依赖库代码一直变, 如何不更新go.mod来得到依赖库的变更代码

背景

不知道你们是否有类似情况?

问题: 在开发项目中(通常情况会同时修改项目代码:A、B ),A项目go mod依赖B, B可能一直处于变更中,但B的代码不想每次变更都推送到远端,如何让A能正常依赖B的变更呢?

正常情况: B变更后, 推送到远端仓库, A通过拉取B新的gomod,就能获取B的变更代码依赖。

go get  domain/repo/B@[branch or tag name]

通过上面的命令, A可以获取到了B变更后的代码,这个库的代码依赖在目录:$GOPATH/pkg/mod中

但这样有个问题?

每次B做了很小的变动,都得推到远端,然后A还得重新拉B最新的代码, 是不是有点烦?

go work

没错, 这里可以使用go work 来解决这个问题

通过 go work 可以将对代码库B的依赖变成你自己本地的库依赖, 这样B的所有改动都能在A那边实时获取到。 这样就不至于在写A项目代码时,依赖关于B的代码定义报错的情况

go work 命令:

常用command:

  • init: 初始化go work
  • edit:   修改go.work 文件
  • sync:  TODO
  • use:  添加一个module

 通常在 $GOPATH/src下执行以下命令来初始化 一个workspace

go work init 

结果: 在当前目录生成一个 go.work文件

注意: 在执行 go work init 时, 如果父目录存在一个go.work文件, 在子目录再次执行时,会下面的报错

go:  $GOPTTH/src/go.work already exists

如果想添加一个module依赖到该workspace,可以进行如下操作:

方法一: 

 进入所有module的目录下执行: go work use .

方法二: 

直接在go.work文件所在目录下, 执行 : go work use [module_path]

module_path:  表示module相对于当前目录的全路径地址

在通过上面两种方法引入过module之后的go.work 文件类似如下:

go 1.20

use (
   ../foo/bar
   ./baz
)

针对上面的问题, 在init之后,通过执行以下命令, A就可以直接引用本地B项目的代码

go work use  ./domain/repo/B 

END ~ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

JYCJ_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值