代码之家  ›  专栏  ›  技术社区  ›  shabunc

如何将java_binary生成的可执行包装传递给ctx.actions.run

  •  0
  • shabunc  · 技术社区  · 6 年前

    我正在努力了解有关 java_binary . 所以,如果我有这样的代码:

    java_binary(
      name = "my-runner",
      visibility = ["//visibility:public"],
      srcs = glob(["src/main/java/**/*.java"]),
      main_class = "my.awesome.package.MyRunner",
    )
    

    bazel build MyMainClass -一切正常-我可以看到两个文件生成-一个jar文件和一个包装脚本。

    根据 official documentation :

    传递JVM标志和加载本机库的选项。

    我试过的是:

    some_rule = rule(
        _some_rule_impl,
        attrs = {
            "_executable": attr.label(
               cfg = "host",
               executable = True,
               default=":my-runner"
            ),
            ...
        }
      )
    

    _some_rule_impl 我正试图将可执行文件传递给 ctx.actions.run

    当我经过的时候 my-runner_deploy_deploy.jar 作为一个我可以传递给java的文件-一切正常。但是我想知道如何将包装器作为可执行文件传递。

    1 回复  |  直到 6 年前
        1
  •  0
  •   rds    6 年前

    在运行操作中,可以使用 executable = ctx.executable._executable .

    ctx.actions.run 举个例子 https://github.com/bazelbuild/examples/blob/master/rules/actions_run/execute.bzl

    编辑 :my-runner 是一个已经有包装脚本的java_二进制文件。