裤子里的go_remote_library用法

时间:2015-08-20 00:25:16

标签: pants

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

第一道防线是BUILD Dictionary。 对于go_remote_library,您会找到this doc

至于测试,最简单的测试是检查语法,为此就可以解决这个问题:

./pants list path/to/BUILD:

请注意附加到路径的尾部冒号

这表示"列出path/to/BUILD中定义的所有目标。这里:表示全部 - 它等同于构建文件中裤子目标的bourne shell中的*通配符。

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

./pants list ::

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

如果语法检出,您可能仍会遇到更微妙的问题,例如定义不指向有效github项目的go_remote_library。只有在尝试执行目标的listdepmap目标等元数据时,才会显示这些问题。对于go_remote_library,最简单的方法是尝试解析库:

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

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

go_remote_library(name='go-simplejson2')

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

您可以使用go_librarygo_binary目标执行类似的更高级别检查,而不是运行./pants compile ...。无论您是否缺少任何必需的go_remote_library BUILD文件或依赖项,都会冒烟。