Композитный проект: точки останова в дебаггере не работают при запуске тестов в аддонах

Добрый день.
Разрабатываем несколько композитных проектов (fulsstack-app + аддоны).
Во всех аддонах используем java21/Jmix-2.2.0.

Столкнулись со следующей проблемой:

  1. Если запускать тесты в режиме дебага из композитного проекта, то Idea не останавливается на точках останова.
  2. Если открыть addon в виде отдельного проекта, то Idea останавливается на точках останова. Но естественно при этом мы лишаемся плюсов композитного проекта - необходимо публиковать зависимости (другие разрабатываемые нами аддоны) в локальный репозиторий.

В пустом gradle проекте с аналогичной структурой модулей точки останова работают.
gradle_vanilla.zip (178.9 КБ)
jmix_composite.zip (244.5 КБ)

А как Вы запускаете тесты в дебаг режиме? И Какой вывод в консоль у Вас получается?

В данном конкретном случае тесты запускаю по одному (например один тестовый метод) средствами IDE Idea.
Вывод в консоль идентичный за исключением одной строчки (она отсутсвует при запуске из композитного):
Connected to the target VM, address: 'localhost:49739', transport: 'socket'

Добрый день

Спасибо за приложенные проекты.

Мы исследуем причины проблемы и постараемся поправить на уровне композитного проекта.
В качестве обходного решения могу предложить следующее:
IDEA при запуске теста/тестов создаёт Run/Debug конфигурацию. В данном случае это Gradle конфигурации.
Screenshot 2024-06-24 at 16.40.39
По умолчанию они создаются для корневого Gradle проекта debug_test-all
И уже при вызове Gradle команды через двоеточие указывается необходимый подпроект:
:debug_addon:debug_addon:test --tests "com.company.debug_addon.DaddTest.contextLoads"
Screenshot 2024-06-24 at 16.45.19

Необходимо открыть конфигурацию на редактирование и указать в качестве Gradle project подпроект аддона и убрать :debug_addon из начала команды

Screenshot 2024-06-24 at 16.47.04

При запуске такой модифицированной конфигурации дебаг работает как ожидается.

1 симпатия

Добрый день.

Спасибо, решение помогло.