问题标签 [bazel-aspect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
66 浏览

bazel - 如何在方面之间传播

我正在应用方面,但不知何故似乎做错了什么。成像著名的参考图片。

在此处输入图像描述

在我的情况下,A 是:

对于A(W)_deps_aspect_impl返回:

现在,如果我正确理解了文档,我应该能够通过A(Y)访问A(W ) 。dep_filesresource_deps

如果对于A(Y)_deps_aspect_impl我会:

没有resource_deps打印(我无法访问它)。

我是否理解错误或这应该如何工作?

0 投票
2 回答
664 浏览

bazel - 在 bazel 方面输出文件中累积数据的推荐策略

我正在编写一个需要目标 jar 文件列表位置的构建后工具。对于这些位置,我有一个在目标列表上运行的方面(使用--aspects分别针对每个目标)并获取每个目标的 jar 文件路径。

我已经设法在每个目标的输出文件夹中的自定义输出文件(例如jar.txt )中获取每个 jar 文件路径。

但这意味着我需要分别检查每个 jar.txt 文件以获取位置。

有没有办法在单个文件中累积 jar 文件路径?
就像是:

  1. 尝试使用方面中的 append 命令写入相同的输出文件夹。我不确定是否可以共享输出文件夹。

  2. 创建一个依赖于所有相关目标的合成目标,然后在该目标上运行一个方面并累积 jar,并且仅在递归返回后将它们写入根目录。

1. 或 2. 是有效选项吗?
在 bazel 方面输出文件中累积数据的推荐策略是什么?

0 投票
1 回答
368 浏览

bazel - 如何使用方面检索 Bazel 工作区规则的属性

我正在编写一个构建后工具,它在 bazel 构建后合成 maven pom 文件。我正在使用方面来收集有关各种目标的相关信息。

其中一项功能涉及将外部jar 依赖项添加到相关的 pom 文件中。

假设我们的工作区包含以下目标:

并且我们的一个BUILD文件包含一个目标,该目标具有番石榴作为依赖项

在这个目标的一个方面,如何检索maven_jar的属性,特别是artifact

(我能得到的最接近的是:

使用ctx.rule.attr.srcs)

我可能只是解析工作区外部 jars目标并获取从名称到工件的映射作为混合解决方案,

但是一个更优雅的解决方案是让方面自己提供工件。可能吗?

0 投票
2 回答
368 浏览

bazel - 在测试目标上运行带有方面的 bazel 构建不会产生测试输出 jar

runningbazel build //... \ --aspects some-aspect.bzl%some_aspect \ --output_groups=some_new_output,default 不会创建测试 jar 输出。

另一方面,运行 bazel test确实会创建测试 jar 输出:

bazel test //... \ --aspects some-aspect.bzl%some_aspect \ --output_groups=some_new_output,default

怎么来的?

此问题已更新以反映方面的使用:原始问题:

runningbazel build //...不会将测试代码添加到输出 jar。

另一方面bazel test //...构建测试代码但也运行它。

bazel 有没有办法在不运行测试的情况下构建测试代码?

0 投票
1 回答
192 浏览

bazel - 如何使用 bazel 方面将数据向下传播到构建链

假设我有一个简单的 java 程序,包括 2 个类:

Example,Example2

和另一个使用这两个类的类:

ExamplesUsage

example我有相应的 java_library: , example2,的 bazel 构建目标 examples_usage

所以需要在构建examples_usage之前编译exampleexample2

我想使用 bazel 方面传播技术从所有三个目标中积累信息,我该怎么做呢?

0 投票
1 回答
200 浏览

bazel - Bazel切面能否访问当前目标的java_common.provider

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

那可能吗?

0 投票
1 回答
136 浏览

bazel - 我如何判断哪些 bazel 方面输出仍然相关

作为我们努力创建 bazel-maven 转换互操作工具(从更细粒度的 bazel jars 创建 maven 大小的 jars)的一部分,我们编写了一个在整个 bazel repoaspect上运行bazel build并将重要信息写入txt文件outputs(例如:jar文件路径编译 deps 目标运行时 deps 目标等​​)

我们遇到了一个问题,即 repo 的代码已更改,因此某些txt文件不再被写入。txt但是之前运行的旧文件(代码更改之前)仍然存在!

有没有办法知道这些 txt 文件不再相关?

0 投票
1 回答
118 浏览

bazel - 使用方面运行 bazel 构建时,如何判断哪些目标被执行(未跳过)

作为我们创建 bazel-maven 过渡互操作工具(从更细粒度的 bazel jars 创建 maven 大小的 jars)努力的一部分,我们编写了一个在整个 bazel repoaspect上运行并写入文件的工具。bazel buildtxtoutputs

  1. 我们只想为非兑现目标编写这些outputs 方面
  2. 更好的是在运行结束时有一个列表,其中包含所有已运行的目标(由于它们被缓存而没有跳过)

1. 和 2. 可能吗?

0 投票
1 回答
674 浏览

bazel - 如何结合bazel方面和cc_library

我想建立一个非常相似的规则cc_proto_library。关键特性是它将一个方面应用于所有传递proto_library依赖项,并为所有依赖项生成.cc.h文件。此外,它还会生成将这些编译成目标文件的操作。

虽然我了解如何生成文件,但我看不到如何轻松生成对象。本模块不适用于规则(或方面)实现,并且我不能在方面​​之上使用宏,因为我需要在与 相同的包中生成目标文件,proto_library以便仅生成一次。

cc_proto_library我相信可以做到这一点,因为它不是用 Skylark 编写的,因此可以访问更多原语。无论如何,只有云雀可以做到这一点吗?

0 投票
1 回答
558 浏览

maven - Bazel 构建不适用于 Maven 项目

我是 Bazel 的新手,正在学习它的构建工作,目前我正在尝试从 Maven 项目构建 bazel,请告诉我如何使它工作,谢谢。

这是我要定义的WORKSPACE文件:

这是我要定义 的BUILD文件:

这是我得到的 Bazel 构建结果: