【问题标题】:go_remote_library usage in Pants裤子中的 go_remote_library 用法
【发布时间】:2015-08-20 00:25:16
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: pants


    【解决方案1】:

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

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

    至于测试,最简单的测试是检查语法,这样就可以了:

    ./pants list path/to/BUILD:
    

    注意路径后面的冒号

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

    如果您想同时检查更多目标,您可以说:

    ./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 文件或依赖项,这都会消失。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多