Рабочий каталог Bazel отличается от Maven.Как мигрировать? - PullRequest
0 голосов
/ 15 октября 2018

У меня есть существующий проект, который построен с 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, рабочим каталогом является runfiles * в формате sanboxed, которые имеют корень как рабочее пространство, то естьТеперь тест должен открыться:

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

Все хорошо после миграции, но вы справляетесь с этой ситуацией во время миграции , т.е. как вы проходите тестирование как в Maven, так и в Bazel?

Есть ли какая-либо возможность, предлагаемая тестером Bazel для адаптации путей к унаследованному поведению?

1 Ответ

0 голосов
/ 16 октября 2018

Текущий обходной путь, который у меня есть, - проверить, является ли new File(".").getAbsoluteFile().getParentFile() значением __main__.

См. TestFileUtil.java

...