强制目标重建

时间:2017-06-29 08:11:18

标签: bazel

在构建目标之后,我需要触发这些部署。

真的不浪费任何时间我希望将其作为构建规则。现在,为了实现这一点,我希望每次都能完成部署。 所以问题是:

如何确定性地从头开始强制重建目标?

1 个答案:

答案 0 :(得分:1)

作为第二步,这样做会更加明显,例如,

java_binary(
    name = "target1",
    ...
)

java_binary(
    name = "target2",
    ...
)

sh_binary(
    name = "deploy-targets",
    srcs = ["deploy-targets.sh"],
    data = [":target1.jar", ":target2.jar", ...],
)

然后在您要部署时执行bazel run //path/to:deploy-targets

deploy-targets.sh看起来像:

#!/bin/bash

for t in $(ls ws/path/to/*.jar); do
  mvn deploy:deploy-file -Dfile=$t ...
done

动作(在构建期间发生的事情)不应该与外部环境交互,因此部署了一些契约的中断。另一方面,run可以做任何事情,它只是运行二进制文件。

使用run也可以解决您的“每次运行”问题:Bazel无法“缓存”分叉二进制文件。