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 构建期间读取文件。
考虑以下结构:
- 回购根目录
- 一些模块
- src/main
- webapp(例如包含 WEB-INF/web.xml)
- scala/com/wix/someCode(生成文件在 somCode)
- BUILD(公开 src/main/webapp 文件的文件组)
鉴于我有几个 SomeModule
,它们共享一个测试实用程序,该实用程序将 src/main/webapp/WEB-INF/web.xml
作为 File
向他们公开(无法更改为 FileInputStream
)我试图了解如何最好地将这些文件公开给测试和测试实用程序。
如果我在 someCode
中将 src/main/webapp
的依赖定义为:
- data- 文件将作为运行文件中的文件公开 但是 将位于
user.dir/SomeModule/src/main/webapp
中并且测试实用程序不知道 [=13] =]它在里面。
- 资源-文件将在类路径中公开,但不会作为文件公开(
jar
方案)
- classpath_resources- 文件将直接在
user.dir
但 AFAIU 没有 src/main/webapp
我目前考虑的解决方案是将其公开为 data
并使用 $(location)
扩展将 runfiles
中的位置传递给系统中的测试 属性.我使用这种方法的主要问题是我认为测试在 IntelliJ 中不起作用(除非 Bazel 插件支持 $(location)
扩展和 自动 通过 jvm_flags 测试)。
我的问题是:
- 这个问题的最佳实践是什么?
- 如果是
data
和 $(location)
扩展那么如何处理 IntelliJ?
我和 Intellij 插件的维护者谈过,他认为把它放在 data
中并由 $(location)
找到它应该 "just work."(如果没有,他要求你提交了一个错误。)
理论上,该插件应该可以处理任何有效的 Bazel 项目。
再次将大型 Maven 代码库迁移到 Bazel。
我有一些测试试图从 user.dir 中读取一些文件(比如来自 src/main/webapp
的文件主要是为了在 IntelliJ 中更容易地测试 运行)。
我正在尝试了解如何更改它们以在 Bazel 构建期间读取文件。
考虑以下结构:
- 回购根目录
- 一些模块
- src/main
- webapp(例如包含 WEB-INF/web.xml)
- scala/com/wix/someCode(生成文件在 somCode)
- BUILD(公开 src/main/webapp 文件的文件组)
- src/main
- 一些模块
鉴于我有几个 SomeModule
,它们共享一个测试实用程序,该实用程序将 src/main/webapp/WEB-INF/web.xml
作为 File
向他们公开(无法更改为 FileInputStream
)我试图了解如何最好地将这些文件公开给测试和测试实用程序。
如果我在 someCode
中将 src/main/webapp
的依赖定义为:
- data- 文件将作为运行文件中的文件公开 但是 将位于
user.dir/SomeModule/src/main/webapp
中并且测试实用程序不知道 [=13] =]它在里面。 - 资源-文件将在类路径中公开,但不会作为文件公开(
jar
方案) - classpath_resources- 文件将直接在
user.dir
但 AFAIU 没有src/main/webapp
我目前考虑的解决方案是将其公开为 data
并使用 $(location)
扩展将 runfiles
中的位置传递给系统中的测试 属性.我使用这种方法的主要问题是我认为测试在 IntelliJ 中不起作用(除非 Bazel 插件支持 $(location)
扩展和 自动 通过 jvm_flags 测试)。
我的问题是:
- 这个问题的最佳实践是什么?
- 如果是
data
和$(location)
扩展那么如何处理 IntelliJ?
我和 Intellij 插件的维护者谈过,他认为把它放在 data
中并由 $(location)
找到它应该 "just work."(如果没有,他要求你提交了一个错误。)
理论上,该插件应该可以处理任何有效的 Bazel 项目。