我目前正在使用go list -f '{{join .Deps "\n"}}' ./... |grep -Eo 'vendor/.*'
目录来本地供应我的依赖项。
vendor/
这向我展示了所有"构建依赖关系"在我的构建中使用(从$ go list -f '{{join .TestImports "\n"}}' ./... |grep -Eo 'vendor/.*'
vendor/github.com/stretchr/testify/assert
...
使用)。此功能记录在此处:https://golang.org/cmd/go/#hdr-List_packages
但它并没有包含你的测试依赖关系"!
为了找到我的"测试依赖项",我运行这个命令:
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
。找到"所有测试依赖关系"?
有没有更有效的方法来实现这一点,理想情况下只需要一次{{1}}调用和一些模板化?
答案 0 :(得分:1)
我担心没有办法只使用一个" go list"来显示所有递归测试依赖项。
您需要至少使用两个:
go list -f '{{join .Deps "\n"}}' `go list -f '{{join .TestImports " "}}' ./...`