首页 > 解决方案 > How to configure go mod to have a require version based on environment variable?

问题描述

I have two internal projects.

Project1 - go.mod file

go github.com/company/project1
 
go 1.16

require github.com/company/project2 v1.1.0 // indirect

Project2 - go.mod file

go github.com/company/project2
 
go 1.16

Project1 is dependent on Project2 based on the above go.mod file.

When Project2 moves across multiple environments it needs to be dependent upon different version of Project1.
For instance, based on environment variable:

Can this be done dynamically without modifying the go.mod file everytime ?

标签: gogo-modules

解决方案


这可以在不修改 go.mod 文件的情况下动态完成吗?

我不知道:您的部署过程应该包括一个go mod replace(如此处所示)以更新 project2 依赖项,具体取决于当前的部署环境。

如果该部署涉及 git 克隆,那么您可能会考虑内容过滤器驱动程序(此处说明)在结帐时自动执行该更改。

但如果这是通过 Go 完成的,那么 ago mod replace会更好。


注意:由于实现的复杂性,问题 27824go.mod:使用环境变量进行替换)已于 2019 年关闭。
问题 33586go.mod~替换语句中的支持)仍处于打开状态。


推荐阅读