我有一个用Maven构建的现有项目 . 它通常定义了几个模块 . 我想将这个项目迁移到Bazel .
在第一次尝试中,我使用
└── project
├── moduleA
│ ├── BUILD
│ ├── pom.xml
│ └── src
│ ├── main
│ │ └── java
│ └── test
│ ├── data
│ └── java
├── moduleB
│ ├── BUILD
│ ├── pom.xml
│ └── src
│ ├── main
│ │ └── java
│ └── test
│ └── java
├── pom.xml
└── WORKSPACE
用Bazel制作项目并不太难 . 我现在的问题是测试无法找到他们的测试数据 .
实际上,使用Maven(或ant),工作目录是包含 pom.xml
(或 build.xml
)的目录 . 那么,在那种情况下,moduelA可以做到:
new File("src/test/data/foo.txt");
但是,当测试在Bazel中运行时,工作目录是sanboxed运行文件,其根植于工作空间,即现在必须打开测试:
new File("projectA/src/test/data/foo.txt");
迁移后这一切都很好,但您是否在迁移过程中处理这种情况,即如何在Maven和Bazel中进行测试?
Bazel测试运行器是否提供任何设施来调整遗留行为的路径?
1 回答
我目前的解决方法是检查
new File(".").getAbsoluteFile().getParentFile()
是否__main__
.见TestFileUtil.java