【发布时间】:2020-06-09 15:14:01
【问题描述】:
我的项目由多个 go 模块组成,我需要同时处理这些模块。这可以通过在 go.mod 文件中使用 replace 指令来简化。
此外,为了防止此更改被意外签入,go 工具(从版本 1.14 开始)提供了一个 -modfile 开关,它允许我将 replace 指令放在 go.local.mod 文件中。这个超级方便。
很遗憾,我无法让 Goland 接收此 go.local.mod 而不是 go.mod。
我尝试将Preferences -> Go -> Go Modules 下的GOMOD 环境变量设置为指向我的go.local.mod 文件。这没有达到我的预期(即使用go.local.mod 文件而不是go.mod)
毫不奇怪,这不起作用,因为 GOMOD 应该是只读的(正如在 cmets 中向我指出的那样)。
现在我可以回到将替换指令放在 go.mod 文件中并使用提交挂钩来防止意外签入(Goland 也有一些工具可以执行此检查)但是,这将非常方便如果 Goland 可以识别 go 添加的这个新的 -modfile 开关。我想我会要求确保我没有在这里遗漏一些明显的东西。
谢谢!
【问题讨论】:
-
你是对的。它不是。但是在设置环境变量时有一个“其他”选项。所以我试了一下。老实说,我真的不在乎这是否是使用 GOMOD env-var 实现的。我只是希望有一种方法可以做到这一点,仅此而已。
-
GOMOD被特别记录为不是从环境中读取的。您是否正在寻找GOFLAGS变量? -
道歉。让我编辑我的问题以消除对 GOMOD 的关注。我想要实现的是让 Goland 使用不同于默认的 go.mod 文件(即相当于 go 工具中的 -modfile 开关)
-
我没试过,但是在“运行配置”中添加-modfile怎么样?
-
你试过
GOFLAGS吗?GOFLAGS=-modfile=./go.local.mod做你想做的事吗?
标签: go go-modules goland