我目前正在使用vendor/目录来本地供应商我的依赖关系。
go list -f '{{join .Deps "\n"}}' ./... |grep -Eo 'vendor/.*'这向我展示了构建中使用的所有“构建依赖关系”(来自vendor/)。这个特性记录在这里:packages
但它不包括您的“测试依赖”!
因此,为了找到我的“测试依赖项”,我运行以下命令:
$ go list -f '{{join .TestImports "\n"}}' ./... |grep -Eo 'vendor/.*'
vendor/github.com/stretchr/testify/assert
...它正确地列出了“测试导入”,但没有列出这些测试导入的“依赖关系”。
例如,上面列出的vendor/github.com/stretchr/testify/assert目录实际上依赖于vendor/github.com/pmezard/go-difflib/difflib (和其他几个包)。这在上面的输出中没有显示!
但是如果我运行这个命令,它将显示testify/assert的依赖关系。
$ go list -f '{{join .Deps "\n"}}' ./vendor/github.com/stretchr/testify/assert | grep -Eo 'vendor/.*'
vendor/github.com/davecgh/go-spew/spew
vendor/github.com/pmezard/go-difflib/difflib
...因此,我似乎需要在所有“测试导入”上调用go list -f '{{join .Deps "\n"}}'来查找“所有测试依赖项”?
是否有一种更有效的方法来做到这一点,最好是使用单个go list调用和一些模板?
发布于 2018-05-30 13:01:00
恐怕只使用一个"go“就无法显示所有的递归测试依赖项。
您至少需要使用两个:
go list -f '{{join .Deps "\n"}}' `go list -f '{{join .TestImports " "}}' ./...`https://stackoverflow.com/questions/50573657
复制相似问题