我目前正在尝试使用go_remote_library目标??,包??,插件?在裤子里。真正简单的问题,在这里:
如果在我的代码中我将导入列为:
import(
"github.com/golang/groupcache"
)
指定一个简单的“groupcache”名称而不是完整的导入路径对我有效吗?这是我的BUILD文件的样子:
go_remote_library(name="groupcache",
rev="d781998583680cda80cf61e0b37dd0cd8da2eb52"
)
我这样做了吗?作为旁注,是否有可以用来测试我的BUILD文件是否有效的Pants目标?谢谢!
答案 0 :(得分:2)
你做得对。所有go目标 - 在这种情况下go_remote_library
,还有go_library
和go_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
。只有在尝试执行目标的list
和depmap
目标等元数据时,才会显示这些问题。对于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_library
BUILD文件或依赖项,都会冒烟。