登录
首页 >  Golang >  Go问答

go 模块多个主要方法

来源:stackoverflow

时间:2024-04-12 16:09:37 312浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《go 模块多个主要方法》,正文内容主要涉及到等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

问题内容

我有一个具有多个主要方法的项目。 当运行 go build program1/main1.go 时,它与 program2/main2.go 具有不同的依赖项集,我的第一个 go build 似乎更改了我的 go.mod 文件并删除了它认为的依赖项不需要。然而 main2 需要这些依赖项。

我尝试过使用 go build ... 但这也创建了一组不同的依赖项。具体来说,似乎所有 //indirect 依赖项都被删除并导致 program2 失败。

有没有办法在不更新 go.mod 文件的情况下运行 go buildgo run ?使用 go build -mod=readonly program1/main1.go 它告诉我它失败,因为依赖项需要更新..


解决方案


我相信您正在寻找子模块。请参阅this walktrhough

TLDR:您需要在每个工具的 cmd 目录中都有一个单独的 go.mod,并且您可以使用 replace 指令将这些工具的依赖项指向本地模块。

This Go Issue 和其他链接的人建议找出“一个正确的方法”来做到这一点仍然是 WIP,尽管我认为你的用例足够简单。

使用子模块是一种嵌套方式您可以编辑多个Go模块项目。

但是 Go 1.18 可能包含 Go 工作区 的概念,这意味着您不再需要子模块:一个 Go 项目可以包含多个您可以编辑的模块。

请参阅 golang/go issue 45713: "proposal: cmd/go: add a workspace mode " 及其 design document

例如,参见 CL 334934(CL = 更改列表)

您可以使用 go mod initwork 启动多模块项目

同样,这不是在 Go 1.18(2022 年第 1 季度)之前,并且可能会在 Go 1.19(2022 年第 3 季度)中选择加入。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《go 模块多个主要方法》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>