问题标签 [bazel-rules]
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.
scala - 类路径中缺少记录器
我尝试在 Bazel 中编译一个 Scala 库。这会导致错误:
我的BUILD.bazel
样子是这样的:
根据我的阅读,这个错误通常源于混合 2.x 和 2.y Scala 版本。不过,我一生都无法弄清楚我会在哪里做这件事。
bazel - 我可以从 .bzl 文件加载常用规则吗?
我们经常需要每个技术堆栈的通用规则组合。目前这在 WORKSPACE 中浪费了大量空间——它们应该在多个存储库中保持同步。在 buildifier 之后有 50 多行,并且包含太多的 url、版本和哈希。
现在说我有一个“技术堆栈”回购并做类似的事情
将在哪里load_rules
加载和初始化例如 rules_go、bazel-gazelle、rules_docker、rules_proto 的固定版本并以正确的顺序初始化它们,以便它们在 WORKSPACE 中可见?
我没有让它在我的测试中工作,因为load
显然不能在 bzl 文件中的函数中运行 - 它本身不是函数。
有没有办法做到这一点?
这是我为 Java 测试的示例:
...所有http_archive
对规则回购的要求都在WORKSPACE
,我想把它们移到这里,但这根本不起作用。照原样,我收到此错误:
也添加 rules_python 也无济于事。
build - 如何从 BUILD 文件下载 Bazel 中的文件?
有没有办法直接从 BUILD 文件下载 Bazel 中的文件?我知道我可能可以使用wget
和启用网络,但我正在寻找一种可以与bazel fetch
.
我有一堆文件要下载,这些文件将被一个包消耗。使用在 monorepo 根目录中添加http_file()
规则的标准方法感觉不对。WORKSPACE
它将与包分离,它会污染一个完全不相关的文件。
bazel - 有没有办法在 Bazel 中有一个标签列表字典?
我正在尝试在Bazel中为我的公司使用的工具创建一组规则。有没有办法创建一个规则属性,它是一个标签列表的字典,其中字典的键是一个字符串?
例如,目标应如下所示:
注意:我知道我可以区分foo
并bar
通过将它们放在单独的目标中,然后让第三个目标依赖于两者,但宁愿它们都在同一个目标中。
bazel - Bazel 获取外部依赖项的位置作为 py_binary 的命令行参数
我需要外部(或内部)依赖的路径将其作为参数传递给内部的函数。我们需要文件夹的位置,而不是特定文件。此外,有时,我们需要共享库所在文件夹的路径,由cc_library
.
Python 文件
构建文件
bazel - 为什么 Bazel run_shell 没有正确放置参数?
我有规则a
:
出于某种原因,我收到以下错误:
看起来 Bazel 没有正确解析参数。如您所见,实际的 bash 命令试图cp '' <src> <dst>
我也尝试过格式化复制命令本身,效果很好:
有谁知道问题是什么?
android - 尝试从配置了 bazel 的项目中调用本机函数时出现 java.lang.UnsatisfiedLinkError
我在我的 bazel 构建文件中创建了一个 cc_library 并在 android_binary 规则中添加了 deps
巴泽尔建造:
并将指定包中的库加载为
并将本机函数声明并调用为:
宣言:
函数调用
JNI文件函数声明及定义:
库成功加载,但函数调用抛出错误java.lang.UnsatisfiedLinkError
如何从我的 java 文件中调用本机 foo()?
bazel - 谁能详细说明如何在 C++ 规则中实现像 local_defines 这样的属性?
我正在开发一个自定义的 bazel 规则,我需要一个属性仅应用于目标,而不是它的依赖项。它应该与 C++ local_defines 相同。谁能提供一些关于如何实现它的想法?我需要提供者中的字典吗?
bazel - Bazel:在 genrule 中引用输出目录中的文件
我试图引用一个规则的输出,该规则嵌套在另一个规则的输出目录中genrule
。
例如,我使用rules_foreign_cc来构建 boost:
当我构建它时,我看到了输出:
Boost 工作正常,我可以在
cc_library
目标中引用它,并且二进制文件运行良好。
现在,我想引用一个 genrule 中的输出之一。我要引用的文件嵌套在boost/lib/
目录中。我会期待类似的东西:$(location :boost/lib/libboost_program_options.so.1.72.0)
,但这不起作用。
引用目录中的输出的正确方法是什么?
java - 将 mvn 作为 bazel 构建中的工具运行
我的项目中有一个棘手的模块,除了 Maven,它(还)不能由任何东西构建。好消息是这个模块在我的项目中没有任何 Java 依赖项,它只生成一个.war
文件,我需要将它移动到输出 zip 分发中的正确位置。
我想将构建迁移到 bazel,但我想在迁移的后期处理棘手的模块。
如何在我的 bazel 构建中运行 mvn 作为工具,让它生成 .war 文件?
- Maven 期望从包含
pom.xml
- Maven 将输出写入输入文件树的子目录
- 当 settings.xml 包含绝对路径时,Maven 是最快乐的(到 .war 的本地 maven 存储库,存储在 git 中)
- Maven 使用 $HOME/.m2 进行缓存
我查看了 rules_foreign_cc,它围绕 cmake 创建了一个包装脚本。这是要走的路吗?https://github.com/bazelbuild/rules_foreign_cc/blob/8372f383cf7277a88762efe25d8cfee10ad27929/tools/build_defs/framework.bzl#L156