Bazel-如何依赖于“约定”位置的文件测试($ Module / src / main / webapp)

时间:2017-05-01 15:01:25

标签: java maven intellij-idea bazel

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

  • RepoRoot
    • SomeModule
      • 的src /主
        • webapp(例如包含WEB-INF / web.xml)
        • scala / com / wix / someCode(somCode上的BUILD文件)
      • BUILD(文件组公开src / main / webapp文件)

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

  1. 数据 - 文件将作为文件显示在运行文件中,但将位于user.dir/SomeModule/src/main/webapp中且测试实用程序不知道其中的SomeModule中的哪一个
  2. 资源 - 文件将在类路径中公开,但不作为文件公开(jar scheme)
  3. classpath_resources-文件将直接在user.dir上,但AFAIU没有src/main/webapp
  4. 我目前考虑的解决方案是将其公开为data并使用$(location)扩展将runfiles中的位置传递给系统属性中的测试。我对这种方法的主要问题是我认为测试在IntelliJ中不起作用(除非Bazel插件同时支持$(location)扩展和自动将jvm_flags传递给测试)。 / p>

    我的问题是:

    1. 此问题的最佳做法是什么?
    2. 如果是data$(location)扩展,那么如何处理IntelliJ?

1 个答案:

答案 0 :(得分:1)

我和Intellij插件的维护者交谈,他认为把它放在data并通过$(location)找到它应该"只是工作。" (如果没有,他要求你提交错误。)

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