这里纪录一个失败的尝试。
对于一个 Go 包 github.com/example/kit
,它其中有个子包 github.com/example/kit/dal
。需求是:
- 将子包独立成单独仓库:
github.com/example/dal
- 期望 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 不支持
没有找到可行的方法。