1 回答
TA贡献1788条经验 获得超4个赞
您似乎对什么是模块感到困惑。经验法则是,一个go.mod
文件等于一个模块。去维基,gomod:
模块由 Go 源文件树定义,在树的根目录中有一个 go.mod 文件。
根据问题中显示的目录树,看不到go.mod
文件,因此没有 Go 模块。事实上,如果您尝试运行模块感知命令,google-golang
或者golang-getting-started
您将拥有:
go: 在当前目录或任何父目录中找不到 go.mod 文件;见“去帮助模块”
如果您想从多模块存储库的根目录运行所有测试,如您的问题标题所述,使用 Go 1.17 您可以:
初始化子模块:
$ cd google-golang/golang-getting-started/module1
$ go mod init example.com/module1
$ cd ../module2
$ go mod init example.com/module2
使用Cerise Limón从多模块项目的根目录中建议的技巧
$ cd google-golang
$ find . -name go.mod -execdir go test ./... \;
如果您实际上并不关心将子存储库保留为单独的模块,则可以在根存储库中初始化一个模块并从那里运行所有测试:
$ cd google-golang # or google-golang/golang-getting-started/
$ go mod init example.com/mainmod
$ go test ./...
...但是,即使这个 hack 现在可以工作,它也没有多大意义,因为你的 reposmoduleN有main.go文件,它们的包应该被命名为main,在每个文件中。因此它们确实被组织为单独的子模块。
- 1 回答
- 0 关注
- 70 浏览
添加回答
举报