Bazel 方面能否访问当前目标的 java_common.provider

Can Bazel aspects access the current target's java_common.provider

作为我们创建 bazel-maven 转换互操作工具(从更细粒度的 bazel 罐子创建 maven 大小的罐子)的努力的一部分, 我们希望在 bazel build 上运行的 aspect 访问目标的 java_common.provider,以便从中获取 jars 和 ijars。

这可能吗?

简短的回答是肯定的,这是可能的。

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

来自 java_common.provider 上的文档:

  • java_common.provider.compile_jarsjava_common.provider.transitive_compile_time_jars是指编译时使用的ijars
  • java_common.provider.transitive_runtime_jars 指的是运行时使用的完整 jar。

编译时的完整 jar 尚不可用,但有人正在努力公开此功能。 (GitHub 上的问题 #3528。)

确保您还阅读了有关此主题的博客 post:https://blog.bazel.build/2017/03/07/java-sandwich.html