Java Bazel-如何在测试中依赖位置为“from”的文件;公约“;($Module/src/main/webapp)

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文件) 鉴

再次将大型Maven代码库迁移到Bazel。
我有一些测试尝试从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项目。

    谢谢!你认为这是最好的做法吗?考虑到这些限制,我认为是的。