Bazel сборка: Java файл находится вне корневой директории модуля, поэтому он не будет скомпилирован.

Вопросы и ответы

Возникает проблема при добавлении тестовых файлов в путь к тестовой папке /industries-access-propagation-impl/test/unit/java/src/strictunit/accesspropagation/logger/. Я вижу сообщение “Java файл находится вне корня модуля, поэтому он не будет скомпилирован“, и тестовые файлы не компилируются.

вставьте описание изображения здесь

вставьте описание изображения здесь

Я добавил директорию в .bazelproject. Где еще это нужно добавить, чтобы получить запись для тестовых файлов (/industries-access-propagation-impl/test/unit/java/src), чтобы они компилировались?

Я попробовал щелкнуть правой кнопкой мыши на папке src и выбрать “Отметить директорию как” -> “Корень исходников” или “Корень тестовых источников”. Но эти изменения не сохраняются, когда я выполняю bazel sync или bazel build (в командной строке), и тестовые файлы исключаются. Я добавил записи в /core-app/members.bzl. Что я упустил, чтобы скомпилировать тестовые файлы?

Ответ

Для решения проблемы с компиляцией тестовых файлов в Bazel, когда вы видите сообщение "Java file is located outside of module source root, so it won’t be compiled", необходимо выполнить несколько шагов, чтобы обеспечить правильную настройку вашего проекта.

  1. Проверка структуры папок: Убедитесь, что структура вашей папки соответствует ожиданиям Bazel. Важно, чтобы тестовые файлы находились в правильно структурированном каталоге. В вашем случае путь /industries-access-propagation-impl/test/unit/java/src должен корректно отображаться в структуре проекта Bazel.

  2. Обновление .bazelproject: Убедитесь, что вы добавили правильные пути в файл .bazelproject. Например, если ваш путь к тестовым файлам – /industries-access-propagation-impl/test/unit/java/src, он должен быть правильно указан:

    srcs = [
       "industries-access-propagation-impl/test/unit/java/src",
    ]

    После обновления этого файла выполните команду bazel sync для применения изменений.

  3. Создание BUILD файла: Для того чтобы Bazel знал о ваших тестах, необходимо создать файл BUILD в папке, содержащей тестовые файлы. Например, в папке /industries-access-propagation-impl/test/unit/java/src создайте (или откройте) файл BUILD и добавьте в него следующие строки:

    java_test(
       name = "YourTestName",
       srcs = glob(["**/*.java"]),
       deps = [
           "//path/to/dependencies",  # Укажите зависимости, если они есть
       ],
    )

    Замените YourTestName на желаемое имя вашего теста и добавьте все необходимые зависимости.

  4. Проверка настроек модуля в IDE: Если вы используете IDE, такую как IntelliJ IDEA, убедитесь, что у вас правильно настроены корни исходного кода и тестов. Попробуйте очистить настройки и заново пометить корневые папки. Если изменения не сохраняются после выполнения bazel sync или bazel build, возможно, проблема связана с конфигурацией IDE.

  5. Проверка конфигурации members.bzl: Вы упомянули, что внесли изменения в members.bzl. Убедитесь, что добавленные изменения корректны и соответствуют требованиям. Проверьте на наличие ошибок в синтаксисе и логике.

  6. Запуск сборки: После выполнения вышеуказанных шагов попробуйте снова выполнить сборку с помощью команды:
    bazel build //industries-access-propagation-impl/test/unit/java/src:YourTestName

    Заметьте, что YourTestName должен совпадать с именем вашего теста, указанным в BUILD файле.

Если после выполнения этих шагов у вас все еще возникают проблемы, попробуйте перезапустить IDE и проверить, существует ли что-то в логах, что может указывать на другие потенциальные проблемы.

Оцените материал
Добавить комментарий

Капча загружается...