2017-05-01 31 views
1

再次將大型Maven代碼庫遷移到Bazel。
我有試圖從user.dir讀取一些文件的測試(如src/main/webapp中的文件主要是爲了更容易在IntelliJ中運行測試)。
我想了解如何在Bazel構建過程中將其更改爲讀取文件。
認爲以下結構組成:

  • RepoRoot
    • SomeModule
      • 的src/main
        • web應用(包含例如WEB-INF/web.xml)中
        • scala/com/wix/someCode(somCode中的BUILD文件)
      • BUILD(文件組暴露的src/main/webapp的文件)

鑑於我有幾個SomeModule S和它們共享一個測試工具,它暴露src/main/webapp/WEB-INF/web.xml他們爲File(可不會改爲FileInputStream)我想了解如何最好地將這些文件暴露給測試和測試實用程序。
如果我在someCode定義src/main/webapp的依賴性:

  1. 數據 - 該文件將在runfiles公開爲文件將坐在user.dir/SomeModule/src/main/webapp和測試工具不知道哪個SomeModule的s時,在不在。
  2. 資源 - 這些文件將在classpath暴露但不作爲文件(jar方案)
  3. classpath_resources-文件將直接對user.dir但AFAIU沒有src/main/webapp

目前我已經考慮過被暴露它作爲data和使用$(location)擴張在runfiles位置傳遞到系統中的屬性測試該溶液。我用這種方法的主要問題是我認爲測試不能在IntelliJ中工作(除非Bazel插件同時支持$(location)擴展和自動將jvm_flags傳遞到測試)。

我的問題是:

  1. ,這是什麼問題的最佳做法是什麼?
  2. 如果是data$(location)擴展那麼如何處理IntelliJ?

回答

1

我談過的IntelliJ插件的維護者,他認爲,把它在data並發現它由$(location)應該「只是工作。」 (如果沒有,他要求你提交一個bug。)

這個插件理論上應該處理任何有效的Bazel項目。

+0

謝謝!你會說這是最好的做法嗎? – Ittai

+0

我認爲是這樣,因爲有限制。 – kristina