Java Bazel-如何在测试中依赖位置为“from”的文件;公约“;($Module/src/main/webapp)
再次将大型Maven代码库迁移到Bazel。Java Bazel-如何在测试中依赖位置为“from”的文件;公约“;($Module/src/main/webapp),java,maven,intellij-idea,bazel,Java,Maven,Intellij Idea,Bazel,再次将大型Maven代码库迁移到Bazel。 我有一些测试尝试从user.dir读取一些文件(比如src/main/webapp中的文件,主要是为了更容易在IntelliJ中运行测试)。 我试图了解如何在Bazel构建期间更改它们以读取文件。 考虑以下结构: 复根 某些模块 总工程师/总工程师 webapp(例如包含WEB-INF/WEB.xml) scala/com/wix/someCode(somCode处的构建文件) 生成(文件组公开src/main/webapp文件) 鉴
我有一些测试尝试从user.dir读取一些文件(比如
src/main/webapp
中的文件,主要是为了更容易在IntelliJ中运行测试)。我试图了解如何在Bazel构建期间更改它们以读取文件。
考虑以下结构:
- 复根
- 某些模块
- 总工程师/总工程师
- webapp(例如包含WEB-INF/WEB.xml)
- scala/com/wix/someCode(somCode处的构建文件)
- 生成(文件组公开src/main/webapp文件)
- 总工程师/总工程师
- 某些模块
SomeModule
,它们共享一个测试实用程序,将src/main/webapp/WEB-INF/WEB.xml
作为文件(不能更改为FileInputStream
)公开给它们,我试图了解如何最好地将这些文件公开给测试和测试实用程序。
如果我在someCode
中将src/main/webapp
的依赖项定义为:
数据-这些文件将在runfiles中作为文件公开,但将位于user.dir/SomeModule/src/main/webapp
中,并且测试实用程序不知道它位于哪个SomeModule
中
资源-文件将在类路径上公开,但不会作为文件(jar
scheme)
classpath_资源-文件将直接位于user.dir
上,但不包含src/main/webapp
我目前考虑的解决方案是将其公开为数据
,并使用$(位置)
扩展将运行文件
中的位置传递给系统属性中的测试。这种方法的主要问题是,我认为测试在IntelliJ中不起作用(除非Bazel插件同时支持$(位置)
扩展和自动将jvm_标志传递给测试)
我的问题是:
解决此问题的最佳做法是什么
如果是数据
和$(位置)
扩展,那么如何处理IntelliJ
我和Intellij插件的维护人员谈过,他认为将它放入数据中并通过$(位置)
找到它应该“正常工作”。(如果不行,他要求你提交一个bug。)
理论上,该插件应该能够处理任何有效的Bazel项目。谢谢!你认为这是最好的做法吗?考虑到这些限制,我认为是的。