如何在单个仓库中支持多个go mod模块


本文摘自php中文网,作者藏色散人,侵删。

背景

最近在写Go,有一个项目是多模块的,版本的发布都是在一起的,为了其他项目使用这些模块,所以需要在一个仓库中实现多个模块的发布。

仓库结构

仓库结构如下:

1

2

3

4

5

6

7

.├── README.md

├── a

│   ├── a.go

│   └── go.mod

└── b

    ├── b.go

    └── go.mod

其中a/go.mod使用如下命令生成:

1

go mod init github.com/robberphex/go-test-multi-module/a

版本发布

由于是多模块,所以使用不同的tag。tag名字统一为<模块名>/<版本号>

比如现在的tag有:

1

2

3

4

$ git tag

a/v1.0.0

b/v1.0.0

b/v1.0.1

用户使用

用户在安装的时候只需要和普通模块一样执行命令即可:

1

2

3

4

5

$ go get github.com/robberphex/go-test-multi-module/b

go: downloading github.com/robberphex/go-test-multi-module/b v1.0.1

go: downloading github.com/robberphex/go-test-multi-module v0.0.0-20210420014022-d2c7262e89eb

$ go get github.com/robberphex/go-test-multi-module/a

go: downloading github.com/robberphex/go-test-multi-module/a v1.0.0

VSCode开发体验

但是在多模块的情况下,用VSCode打开仓库(根目录),VSCode就会报错,涉及第三方包的自动补全也没法用:


根据提示查了下资料,发现是golps现在仅仅是实验性的支持多模块仓库,需要手动打开此开关:

1

2

"gopls": {

    "build.experimentalWorkspaceModule": true}

这样就能流畅的开发多模块项目了。

P.S. 还有一个开关ui.completion.experimentalPostfixCompletions也是非常有用的,可以打开看看,效果如下:

更多golang相关技术文章,请访问golang教程栏目!

以上就是如何在单个仓库中支持多个go mod模块的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

golang中mysql建立连接超时时间timeout

golang能开发什么?

golang入门一:变量

手撸golang 基本数据结构与算法 选择排序

一周 go world 新鲜事

手撸golang go与微服务 net.rpc之1

[go]解决go-smtp发送内容乱码和发送html邮件不解析

mysql explain

golang sleep为什么没有返回值

golang实现http代理服务器

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...