首页 > 解决方案 > go modules 多个主要方法

问题描述

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

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

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

标签: gogo-modules

解决方案


我相信您正在寻找submodules。请参阅此演练

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

这个 Go 问题和与之相关的其他问题表明,找出“一种正确的方法”来做到这一点仍然是 WIP,尽管我认为你的用例很简单。


推荐阅读