0

我使用openapi-generator分别生成多个 SDK 并将其放在同一个父目录中:

sdks
--- bar-api
------ go.mod
--- foo-api
------ go.mod

我希望能够bar-api在我的客户端代码中导入。最初有 bar-apigo.mod生成为:

module github.com/coolrepo/bar-api
go 1.13

但我无法修复客户端代码中的导入:

bar "github.com/cool-repo/bar-api"

所以我所做的是:

sdks
--- bar-api
------ go.mod
---go.mod

即,创建sdks/go.mod

module github.com/coolrepo

go 1.13

并手动编辑 bar-apigo.mod以:

module github.com/coolrepo/bar-api

require (
    ...
)

replace github.com/coolrepo => ./..

go 1.15

有没有更好的方法来解决它?这个似乎工作,但这个替换看起来有点hacky。

4

1 回答 1

2

“修复它的更好方法”是将所有生成的 Go 包放在一个模块中,而不是将 repo 拆分为多个模块。

  1. rm bar-api/go.mod
  2. go mod tidy

如果您需要能够独立于同一 repo 中的另一组软件包标记一组软件包的发布,则您只需要将 repo 拆分为单独的模块。对于生成的服务 API,这可能不值得为多个模块处理版本的开发开销。

于 2021-07-07T19:57:01.210 回答