【问题标题】:Bazel working directory differs from Maven. How to migrate?Bazel 工作目录与 Maven 不同。如何迁移?
【发布时间】:2018-10-16 17:10:59
【问题描述】:

我有一个使用 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 runfiles,即现在必须打开测试:

new File("projectA/src/test/data/foo.txt");

迁移后一切正常,但是您是否在迁移期间处理这种情况,即如何使测试在 Maven 和 Bazel 中都通过?

Bazel 测试运行程序是否提供了任何工具来调整路径以适应遗留行为?

【问题讨论】:

    标签: bazel


    【解决方案1】:

    我目前的解决方法是检查new File(".").getAbsoluteFile().getParentFile() 是否为__main__

    TestFileUtil.java

    【讨论】:

    • 我仍在寻找更好的解决方案,因为需要考虑使用 TestFileUtil 来使其正常工作的许多情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 2014-10-15
    相关资源
    最近更新 更多