Golang: Command: Failed Attempt to Redirect Subpackage

 12th August 2022 at 3:13pm

这里纪录一个失败的尝试。

对于一个 Go 包 github.com/example/kit,它其中有个子包 github.com/example/kit/dal。需求是:

  1. 将子包独立成单独仓库:github.com/example/dal
  2. 期望 kit 包的用户,在不改动任何代码、但可以升级 kit 版本的情况下,import github.com/example/kit/dal 时,实际上 import 的是新独立仓库的代码

做了一些调研和尝试:

  • 在 kit 包的 go.mod 中置 replace directive:没有效果,该 replace directive 只会应用于当前包的构建过程,不会被用户的包在依赖 kit 包时使用
  • 在用户的 go.mod 中置 replace directive:当用户是 require .../kit 而不是 require .../kit/dal 时,replace 掉 dal 也没效果
  • git submodule:go 不支持

没有找到可行的方法。