我们src/test/resources根据Maven标准目录布局提供测试依赖性文件.当测试类通过例如获取它们时,这些测试文件最终出现在JAR和类路径中Resources#asCharSource.
Bazel依赖测试文件并让它们出现在类路径中的首选方法是什么?
我有以下内容src/test/resources/BUILD:
filegroup(
name = "test-deps",
testonly = 1,
srcs = glob(["*.txt"]),
visibility = ["//visibility:public"],
)
Run Code Online (Sandbox Code Playgroud)
以下是我的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",
],
)
Run Code Online (Sandbox Code Playgroud)
这有效,但我不确定它是否是Bazel的最佳方式.
是的,这是推荐的方法.正如资源文档中所提到的,Bazel了解Maven标准目录布局,并将数据文件放在正确的类路径中:
jar文件中资源的位置由项目结构决定.Bazel首先查找Maven的标准目录布局,("src"目录后跟"资源"目录孙子).
如果要单独捆绑资源,可以创建仅资源jar,然后使用该resource_jars属性依赖它.
编辑:正如Ittai在下面指出的那样,Bazel不会反省资源,所以你必须小心不要遇到任何冲突(例如,pkg1/src/main/resources/foo和pkg2/src/main/resources /富).也resources不会resource_jars为你检查这个,所以如果这是一个问题,你可能想要在文件组中放置你需要的任何资源,并有一个genrule目标或测试来检查冲突.
| 归档时间: |
|
| 查看次数: |
971 次 |
| 最近记录: |