1

我目前正在尝试使用 go_remote_library 目标??,包??,插件??在裤子。真正简单的问题,在这里:

如果在我的代码中我将导入列为:

import(
  "github.com/golang/groupcache"
)

指定一个简单的“groupcache”名称而不是完整的导入路径对我来说是否有效?这是我的 BUILD 文件的样子:

go_remote_library(name="groupcache",
  rev="d781998583680cda80cf61e0b37dd0cd8da2eb52"
)

我这样做对吗?作为旁注,是否有一个 Pants 目标可用于测试我的 BUILD 文件是否有效?谢谢!

4

1 回答 1

2

你做得对。所有的 go 目标 -go_remote_library在这种情况下,还有go_library-go_binary当前采用 name 参数,它必须是 BUILD 文件所在目录的名称。下一个版本的pants (0.0.44) 应该删除 name 参数采用远离你的选择。

第一道防线是BUILD Dictionary。因为go_remote_library你会找到这个文档

至于测试,最简单的测试是检查语法,这就是诀窍:

./pants list path/to/BUILD:

注意附加到路径的尾随冒号

这表示“列出所有定义的目标path/to/BUILD。这里的:意思是全部 - 它相当于*bourne shell 中用于 BUILD 文件中裤子目标的通配符。

如果您想一次检查更多目标,您可以说:

./pants list ::

这里使用递归 glob - 相当于**在 zsh 中,所以这要求裤子列出 repo 中的所有目标。

如果语法检查出来,您可能还有更微妙的问题,例如定义go_remote_library不指向有效 github 项目的 a。list只有当您尝试做的不仅仅是像和目标一样对目标的元数据采取行动时,这些问题才会出现depmap。对于 a go_remote_library,最简单的练习方法是尝试解析库:

./pants resolve 3rdparty/go/github.com/bitly/go-simplejson2

如果您在该路径中有此 BUILD 文件内容:

go_remote_library(name='go-simplejson2')

运行解析将失败,因为不存在这样的 github 存储库。

go_library您可以使用和目标进行类似的更高级别检查go_binary,而不是运行./pants compile .... 无论您是否缺少任何必需的go_remote_libraryBUILD 文件或依赖项,这都会消失。

于 2015-08-20T00:54:22.893 回答