Bazel-如何在测试中依赖于位置来自 "convention" ($Module/src/main/webapp) 的文件

Bazel- How to depend in tests on files with location from "convention" ($Module/src/main/webapp)

再次将大型 Maven 代码库迁移到 Bazel。
我有一些测试试图从 user.dir 中读取一些文件(比如来自 src/main/webapp 的文件主要是为了在 IntelliJ 中更容易地测试 运行)。
我正在尝试了解如何更改它们以在 Bazel 构建期间读取文件。
考虑以下结构:

鉴于我有几个 SomeModule,它们共享一个测试实用程序,该实用程序将 src/main/webapp/WEB-INF/web.xml 作为 File 向他们公开(无法更改为 FileInputStream)我试图了解如何最好地将这些文件公开给测试和测试实用程序。
如果我在 someCode 中将 src/main/webapp 的依赖定义为:

  1. data- 文件将作为运行文件中的文件公开 但是 将位于 user.dir/SomeModule/src/main/webapp 中并且测试实用程序不知道 [=13] =]它在里面。
  2. 资源-文件将在类路径中公开,但不会作为文件公开(jar 方案)
  3. classpath_resources- 文件将直接在 user.dir 但 AFAIU 没有 src/main/webapp

我目前考虑的解决方案是将其公开为 data 并使用 $(location) 扩展将 runfiles 中的位置传递给系统中的测试 属性.我使用这种方法的主要问题是我认为测试在 IntelliJ 中不起作用(除非 Bazel 插件支持 $(location) 扩展和 自动 通过 jvm_flags 测试)。

我的问题是:

  1. 这个问题的最佳实践是什么?
  2. 如果是 data$(location) 扩展那么如何处理 IntelliJ?

我和 Intellij 插件的维护者谈过,他认为把它放在 data 中并由 $(location) 找到它应该 "just work."(如果没有,他要求你提交了一个错误。)

理论上,该插件应该可以处理任何有效的 Bazel 项目。