首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Bazel v0.19+的JAR工具?

如何使用Bazel v0.19+的JAR工具?
EN

Stack Overflow用户
提问于 2018-10-30 14:48:40
回答 2查看 1.1K关注 0票数 2

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

代码语言:javascript
复制
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)

如果我想要访问@bazel_tools//tools/jdk:current_java_runtime命令,我想我可以使用java,但我不知道需要做什么才能使jar工具正常工作。链接GitHub问题的内容似乎没有解决这个特定的问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-30 19:22:22

我偶然发现对巴泽尔的承诺对Starlark规则做了类似的调整。它使用以下模式:(我对代码做了一些编辑)

代码语言:javascript
复制
# 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上使用。

也见,一个简单示例的拉请求

票数 4
EN

Stack Overflow用户

发布于 2018-10-31 16:07:28

因为我对jar工具的引用是在顶级宏中的泛型规则中,而不是在规则中,所以我无法使用Rodrigo的答案中的方法。相反,我显式地引用了current_java_runtime工具链,然后能够使用JAVABASE使变量作为jar工具的基本路径。

代码语言:javascript
复制
native.genrule(
    name = genjar_rule,
    srcs = [<rules that create files being jar'd>],
    cmd = "some_script.sh $(JAVABASE)/bin/jar $@ $(SRCS)",
    tools = ["some_script.sh", "@bazel_tools//tools/jdk:current_java_runtime"],
    toolchains = ["@bazel_tools//tools/jdk:current_java_runtime"],
    outs = [<some outputs>]
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53066974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档