我正在寻找带有输入文件哈希的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。
答案 0 :(得分:0)
使用Bazel,您可以忘记与Maven一起使用的hacky哈希。 Bazel为您维护哈希,并将重新编译所需的所有内容。 这就是 {reliable,fast}的 reliable 部分:选择两个