bazel - Bazel 工作目录与 Maven 不同。如何迁移?
问题描述
我有一个使用 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 测试运行程序是否提供了任何工具来适应遗留行为的路径?
解决方案
我目前的解决方法是检查是否new File(".").getAbsoluteFile().getParentFile()
是__main__
.
推荐阅读
- angular - primeng :冻结列不适用于动态列
- android - 如何使用 ImageView 在 Widget 上创建边框?
- python - 使用数据仓库的连接详细信息
- javascript - ReactJS Fetch POST 导致不需要的刷新
- android - 无法使用我的 android 应用程序(Kotlin)中的电话支付完成 upi 交易
- datadog - 如何强制立即 DataDog 记录,而不是在 14 秒后
- c++ - C++Builder 中的离线故障转储分析
- java - Selenide 使互联网连接速度变慢
- terraform - 如何使用 API 从 terraform 工作区下载原始日志?
- java - Eclipse Java 6 与 Mysql 8