访问genrule中输入文件的哈希值以传递给Bazel中的命令

时间:2018-09-06 15:53:52

标签: bazel

我正在寻找带有输入文件哈希的genrule中的方式运行命令。

我想在我的项目中开始用Bazel替换Maven。这是一个多存储库设置,可从不同存储库中的源中选择产品。

ProjectA
- moduleA1
- moduleA2

ProjectB
- moduleB1
- moduleB2

Maven构建可以这样执行:

cd ProjectA
mvn versions:set -DnewVersion=A_HASH
mvn clean install 

cd ../ProjectB
mvn versions:set -DnewVersion=B_HASH
mvn clean install -DprojectA-version=A_HASH

我使用versions:set不依赖快照,即使在本地也可以获得可靠的构建。我可以使用来自GIT的哈希,但这还不够,因为1)我想让构建在本地工作而无需提交更改2)B_HASH应该在ProjectA更改时更改

Bazel只允许我在文件更改时重新运行Maven,但不足以将其与Maven存储库集成。

是否可以通过输入文件的哈希值来实现调用“ MVN版本:set -DnewVersion = HASH”的类型规则? Bazel计算输入文件的哈希值,但我找不到如何将此哈希值暴露给genrule。

1 个答案:

答案 0 :(得分:0)

使用Bazel,您可以忘记与Maven一起使用的hacky哈希。 Bazel为您维护哈希,并将重新编译所需的所有内容。 这就是 {reliable,fast}的 reliable 部分:选择两个