Я пытаюсь понять лучшие практики относительно 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 и скрипт-обертку.
Согласно официальной документации :
Использование сценария-оболочки предпочтительнее java -jar, поскольку он также передает флаги 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 - все работает.Однако мне интересно, как передать упаковщик как исполняемый файл.