gpt4 book ai didi

bazel - 如何将 JAR 工具与 Bazel v0.19+ 一起使用?

转载 作者:行者123 更新时间:2023-12-02 00:27:50 25 4
gpt4 key购买 nike

从 Bazel v0.19 开始,如果您有引用 @bazel_tools//tools/jdk:jar 的 Starlark(以前称为“Skylark”)代码,您会在构建时看到这样的消息:

WARNING: <trimmed-path>/external/bazel_tools/tools/jdk/BUILD:79:1: in alias rule @bazel_tools//tools/jdk:jar: target '@bazel_tools//tools/jdk:jar' depends on deprecated target '@local_jdk//:jar': Don't depend on targets in the JDK workspace; use @bazel_tools//tools/jdk:current_java_runtime instead (see https://github.com/bazelbuild/bazel/issues/5594)

如果我想访问 java 命令,我想我可以使用 @bazel_tools//tools/jdk:current_java_runtime 来实现,但我不确定是什么我需要做一些事情才能让 jar 工具工作。 linked GitHub issue的内容似乎没有解决这个特定问题。

最佳答案

我偶然发现了 a commit to Bazel这对 Starlark java 规则进行了类似的调整。它使用以下模式:(我对代码进行了一些编辑)

# in the rule attrs:
"_jdk": attr.label(
default = Label("//tools/jdk:current_java_runtime"),
providers = [java_common.JavaRuntimeInfo],
),

# then in the rule implementation:
java_runtime = ctx.attr._jdk[java_common.JavaRuntimeInfo]
jar_path = "%s/bin/jar" % java_runtime.java_home
ctx.action(
inputs = ctx.files._jdk + other inputs,
outputs = [deploy_jar],
command = "%s cmf %s" % (jar_path, input_files),
)

此外,java 位于 str(java_runtime.java_executable_exec_path)javac 位于 "%s/bin/javac"% java_runtime.java_home.

另请参阅,a pull request with a simpler example .

关于bazel - 如何将 JAR 工具与 Bazel v0.19+ 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53066974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com