问题标签 [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.
bazel - 在 bazel 方面输出文件中累积数据的推荐策略
我正在编写一个需要目标 jar 文件列表位置的构建后工具。对于这些位置,我有一个在目标列表上运行的方面(使用--aspects分别针对每个目标)并获取每个目标的 jar 文件路径。
我已经设法在每个目标的输出文件夹中的自定义输出文件(例如jar.txt )中获取每个 jar 文件路径。
但这意味着我需要分别检查每个 jar.txt 文件以获取位置。
有没有办法在单个文件中累积 jar 文件路径?
就像是:
尝试使用方面中的 append 命令写入相同的输出文件夹。我不确定是否可以共享输出文件夹。
创建一个依赖于所有相关目标的合成目标,然后在该目标上运行一个方面并累积 jar,并且仅在递归返回后将它们写入根目录。
1. 或 2. 是有效选项吗?
在 bazel 方面输出文件中累积数据的推荐策略是什么?
bazel - 如何使用方面检索 Bazel 工作区规则的属性
我正在编写一个构建后工具,它在 bazel 构建后合成 maven pom 文件。我正在使用方面来收集有关各种目标的相关信息。
其中一项功能涉及将外部jar 依赖项添加到相关的 pom 文件中。
假设我们的工作区包含以下目标:
并且我们的一个BUILD文件包含一个目标,该目标具有番石榴作为依赖项
在这个目标的一个方面,如何检索maven_jar的属性,特别是artifact?
(我能得到的最接近的是:
使用ctx.rule.attr.srcs
)
我可能只是解析工作区外部 jars目标并获取从名称到工件的映射作为混合解决方案,
但是一个更优雅的解决方案是让方面自己提供工件。可能吗?
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
怎么来的?
此问题已更新以反映方面的使用:原始问题:
running
bazel build //...
不会将测试代码添加到输出 jar。另一方面
bazel test //...
构建测试代码但也运行它。bazel 有没有办法在不运行测试的情况下构建测试代码?
bazel - 如何使用 bazel 方面将数据向下传播到构建链
假设我有一个简单的 java 程序,包括 2 个类:
Example
,Example2
和另一个使用这两个类的类:
ExamplesUsage
example
我有相应的 java_library: , example2
,的 bazel 构建目标
examples_usage
所以需要在构建examples_usage之前编译example
。example2
我想使用 bazel 方面传播技术从所有三个目标中积累信息,我该怎么做呢?
bazel - Bazel切面能否访问当前目标的java_common.provider
作为我们努力创建 bazel-maven 转换互操作工具(从更细粒度的 bazel jars 创建 maven 大小的 jars)的一部分,我们希望aspect
运行该工具bazel build
以访问目标java_common.provider
,以便从中获取 jars 和 ijars。
那可能吗?
bazel - 我如何判断哪些 bazel 方面输出仍然相关
作为我们努力创建 bazel-maven 转换互操作工具(从更细粒度的 bazel jars 创建 maven 大小的 jars)的一部分,我们编写了一个在整个 bazel repoaspect
上运行bazel build
并将重要信息写入txt
文件outputs
(例如:jar文件路径,编译 deps 目标和运行时 deps 目标等)
我们遇到了一个问题,即 repo 的代码已更改,因此某些txt
文件不再被写入。txt
但是之前运行的旧文件(代码更改之前)仍然存在!
有没有办法知道这些 txt 文件不再相关?
bazel - 使用方面运行 bazel 构建时,如何判断哪些目标被执行(未跳过)
作为我们创建 bazel-maven 过渡互操作工具(从更细粒度的 bazel jars 创建 maven 大小的 jars)努力的一部分,我们编写了一个在整个 bazel repoaspect
上运行并写入文件的工具。bazel build
txt
outputs
- 我们只想为非兑现目标编写这些
outputs
方面。 - 更好的是在运行结束时有一个列表,其中包含所有已运行的目标(由于它们被缓存而没有跳过)
1. 和 2. 可能吗?
bazel - 如何结合bazel方面和cc_library
我想建立一个非常相似的规则cc_proto_library
。关键特性是它将一个方面应用于所有传递proto_library
依赖项,并为所有依赖项生成.cc
和.h
文件。此外,它还会生成将这些编译成目标文件的操作。
虽然我了解如何生成文件,但我看不到如何轻松生成对象。本机模块不适用于规则(或方面)实现,并且我不能在方面之上使用宏,因为我需要在与 相同的包中生成目标文件,proto_library
以便仅生成一次。
cc_proto_library
我相信可以做到这一点,因为它不是用 Skylark 编写的,因此可以访问更多原语。无论如何,只有云雀可以做到这一点吗?
maven - Bazel 构建不适用于 Maven 项目
我是 Bazel 的新手,正在学习它的构建工作,目前我正在尝试从 Maven 项目构建 bazel,请告诉我如何使它工作,谢谢。
这是我要定义的WORKSPACE文件:
这是我要定义 的BUILD文件:
这是我得到的 Bazel 构建结果: