go - 在 monorepo 环境中发布 go 模块
问题描述
假设我有一个 monorepo,并且有几个单独的 golang 服务:
root
└── services
├── svc1
│ ├── go.mod
│ ├── go.sum
│ └── main.go
└── svc2
├── go.mod
├── go.sum
└── main.go
而 svc2 将来会依赖于 svc1。此外,要求 svc1 和 svc2 可以单独发布。
有没有办法可以单独发布模块?go mod 文档只假设只有 repo,所以它不提供这种灵活性。
解决方案
要在存储库的子目录中标记模块的发布版本,请将子目录添加为标记的前缀,例如svc1/v0.1.0
.
根据https://golang.org/ref/mod#vcs-version:
如果模块定义在存储库的子目录中……,那么每个标签名称必须以模块子目录为前缀,后跟一个斜杠。例如,该模块
golang.org/x/tools/gopls
定义在gopls
具有根路径的存储库的子目录中golang.org/x/tools
。该模块的版本v0.4.0
必须具有该gopls/v0.4.0
存储库中命名的标签。
推荐阅读
- r - Shiny-logs-error-没有名为“tidyverse”的包
- repository - 错误:“~linuxupprising”用户或团队不存在
- javascript - java中的selenium不能点击a href="javascript:void(0);"
- python - 如何删除 TensorFlow 自定义操作实例?
- postgresql - Postgres 内存不足
- javascript - Javascript && 和 || 运算符和内联三元函数产生 INSANE 结果
- r - 如何从两个向量中选择增加的值 - '编织两个向量'
- java - 如何在 java8 中使用 compareTo 对 LinkedLists 进行排序
- java - Hive selectExpression : ( 表达式 | tableAllColumns );])
- amazon-web-services - Alexa 技能控制台返回 null