【发布时间】:2021-02-02 16:48:47
【问题描述】:
假设我正在开发一个名为 X 的 Go 项目,它依赖于一个 repo Y。 我还没有在我的项目中使用 go mods X。
我现在使用以下命令在供应商 pkg 的项目 X 中添加了 Y 作为 git 子模块:
git submodule add <URL to Git repo> <Directory in vendor pkg>.
repo Y 对项目有子依赖,比如 Z 在 Gopkg.toml 和 go.mod 文件中定义。现在,当我将代码放到服务器上并运行以下命令来获取子模块 Y 时,依赖文件 Z 仍然丢失。
我应该怎么做才能使用 Gopkg.toml 和 go.mod 文件下载 Z 文件而不显式进入 Y 并下载。
【问题讨论】:
-
"没有明确进入 Y 并下载";你有什么不想这样做的理由吗?
-
@Alex 是的,所以当我使用 Jenkins 作业进行部署时,我不必使用蛮力来使其工作。我应该能够在项目 X 的根级别执行命令。
-
“我还没有在我的项目 X 中使用 go mods。”那你就错了而且没有办法帮助你。现在随处使用 Go 模块。
-
"我修改了一个供应商 pkg" 所以你分叉了一个依赖项。然后只需导入该分叉依赖项。或者
replace与你的 fork 的依赖关系。这是一个 XY 问题。您可以通过艰难的方式来对抗工具,也可以通过简单的方式来使用工具。 -
使用 Go 模块。他们支持您尝试做的所有事情,而且做得很干净。正如您所尝试的那样,使用不受支持的工具会导致一团糟。
标签: git go dependencies git-submodules go-modules