Bazel方面能否访问当前目标&x27;s java_common.provider

Bazel方面能否访问当前目标&x27;s java_common.provider,bazel,bazel-aspect,Bazel,Bazel Aspect,作为我们创建bazel maven过渡互操作工具(从粒度更大的bazel Jar创建maven大小的Jar)的工作的一部分, 我们希望运行在bazel build上的aspect访问目标的java\u common.provider,以便从中获取jar和ijar 有可能吗?简单的回答是有可能的 您可以在方面实现中使用java_common模块,就像在规则实现中使用它一样 从以下文件: java_common.provider.compile_jars和java_common.provider.

作为我们创建bazel maven过渡互操作工具(从粒度更大的bazel Jar创建maven大小的Jar)的工作的一部分, 我们希望运行在
bazel build
上的
aspect
访问目标的
java\u common.provider
,以便从中获取jar和ijar


有可能吗?

简单的回答是有可能的

您可以在方面实现中使用
java_common
模块,就像在规则实现中使用它一样

从以下文件:

  • java_common.provider.compile_jars
    java_common.provider.transitive_compile_time_jars
    指编译时使用的ijar
  • java\u common.provider.transitive\u runtime\u jar是指运行时使用的完整jar
    
编译时的完整JAR还不可用,但有人正在公开此功能。(GitHub上的第3528期)


确保您也阅读了有关此主题的博客帖子:

这是个好消息!具体来说,我如何访问提供商?我无法在
ctx.rule.attr
target
中找到它。我在
ctx.rule.attr.deps
下找到它:
对于ctx.rule.attr.deps中的dep:如果dep中的java_common.provider:
正常,那么可以从
目标访问
java_common.provider
?我需要知道当前目标的java输出是什么,而不是它的依赖项……是的,您可以通过
target[java_common.provider]