gpt4 book ai didi

bazel - 从 Maven 标准目录映射到 Bazel 以获取测试资源

转载 作者:行者123 更新时间:2023-12-05 00:52:22 25 4
gpt4 key购买 nike

我们在 src/test/resources 中有测试依赖文件根据 Maven Standard Directory Layout .当测试类通过例如获取它们时,这些测试文件最终在 JAR 和类路径中。 Resources#asCharSource .

Bazel 中依赖测试文件并让它们出现在类路径中的首选方式是什么?

我的 src/test/resources/BUILD 中有以下内容:

filegroup(
name = "test-deps",
testonly = 1,
srcs = glob(["*.txt"]),
visibility = ["//visibility:public"],
)

以下是我的 src/main/java/com/path/to/my/test/BUILD :
java_test(
name = "MyTest",
srcs = ["MyTest.java"],
resources = ["//src/test/resources:test-deps"],
test_class = "com.path.to.my.test.MyTest",
deps = [
"//src/main/com/path/to/my/code",
"//:junit_junit",
],
)

这可行,但我不确定这是否是 Bazel 中的最佳方式。

最佳答案

是的,这是推荐的方法。如 docs for resources 中所述, Bazel 了解 Maven 标准目录布局,并将数据文件放在正确的类路径中:

The location of the resources inside of the jar file is determined by the project structure. Bazel first looks for Maven's standard directory layout, (a "src" directory followed by a "resources" directory grandchild).



如果您想单独捆绑资源,您可以创建一个仅资源 jar,然后使用 resource_jars 依赖它。属性。

编辑:正如 Ittai 在下面指出的那样,Bazel 不会内省(introspection)资源,因此您必须小心不要以任何冲突结束(例如,pkg1/src/main/resources/foo 和 pkg2/src/main/resources/富)。都不是 resources不是 resource_jars将为您检查这一点,所以如果这是一个问题,您可能希望将所需的任何资源放在文件组中,并有一个检查冲突的 genrule 目标或测试。

关于bazel - 从 Maven 标准目录映射到 Bazel 以获取测试资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43072078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com