Проблема сборки композитного проекта Jmix 1.6.1 на JDK 11

После обновления проекта на Jmix 1.6.1 в композитном проекте перестал корректно собираться основной функциональный аддонн.

Проблема проявляется в том что в JAR аддона отсутствую файлы persistence.xml и orm.xml.

При сборке с подробным выводом (–info) видно, что никаких упоминаний про JPA/DTO сущности аддона нет вообще.

Если поменять в проекте JDK с 11 на 17 - все корректно собирается и работает.

Мигрировали композитный проект с 1.5.5 штано в Studio 2.3.3-241.

Из того, что пришлось сделать вручную:

  • Во всех подпроектах внутри композитного прописать в gradle-wrapper.properties версию 8. Автоматическая миграция это сделала не во всех подпроектах.
  • В основном функциональном аддоне используются widgets и gradle 8 отказывался собирать аддон пока не прописали явную зависимость задач:
processResources {
        mustRunAfter "compileWidgets"
    }

Хотелось бы понять - это у нас в проекте какая-то проблема или просто переезжать на JDK 17?

Добрый день.

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

С уважением,
Иван

Проект достаточно емкий в плане используемых аддонов, включая коммерческие (jmix-cuba, reports, search, bpm, charts, dashboards, imap).

Но есть подозрение в сторону charts, dashboards. Собственных собственных кастмных WidgetSet у нас в проекте нет, а compileWidgets тянется именно от них.

За сегодня перетянул на 1.6.1 пару наших внутренних аддонов, которые используются в этом решении - там проблем со сборкой на JDK 11 нет.
Хотя в них есть зависимость jmix-cuba и в одном из них IMAP.
И проекты аддонов тоже композитные (аддон + тестовое приложение-ранннер)

Плюс ранее на 1.5.5 ловили в этом проекте проблему (Проблема сборки bootWar композитного проекта в GitLab CI) и там опосредованно тоже касалось задачи compileWidgets.
При сборке основного функционального аддона она занимает больше всего времени при и в итоге это при водило к тому, что в WAR приложения persistence.xml собирался некомплектный.

Но теперь на 1.6.1 и JDK 11 сам основной функциональный аддон даже при отдельной его остается вообще без persistence.xml и orm.xml.

Причем и в конвейере GitLab и при локальной сборке в Idea + Studio картина одинаковая.
И замена JDK на 17 в обоих случаях решает.

Андрей, здравствуйте!

Не могли бы вы как-нибудь скинуть лог сборки (с --info), может он прольет свет на причину проблем?

С уважением,
Дмитрий

Кажется я понял сценарий, который привел к этому…

Сегодня несколько раз переключался между проектами и ветками проблемного проекта (на Jmix 1.5.5 и 1.6.1). При очередном открытии проекта случайно заметил среди прочих всплывающих nitification в Idea уведомление типа “JPA facet not found/detected”…

Появляется редко и не прогнозируемо. К сожалению, не заскринил, а после закрытия Idea за несколько открытий/закрытий проекта повторить не смог.

Уведомление информационное, исчезающее автоматом. Проект собрался без persistence.xml и orm.xml. Хотя при сборке нет ни каких ошибок и каких-то сообщений, которые обратили бы на себя внимание.

Судя про всему, при открытии проекта после миграции на 1.6.1 такое же исчезающее уведомление было и осталось незамеченным.

Далее собрали основной функциональный аддон и опубликовали в локальный maven и Package Registry GitLab.

Собрали основное приложение и поймали проблему.

После переключения JDK проекта на 17, естественно убили артефакт основного функционального аддона из локального maven и Package Registry.

Видимо при очередном открытии проекта проблемы с JPA facet не возникло и на JDK 17 все собралось, опубликовалось в maven заработало.

Теперь бы снова поймать момент с “JPA facet not found” при открытии проекта и понять причину возникновения… Ранее такого никогда не встречал.

Сейчас локально нормально собирается на JDK 11, в тестовом конвейере в Gab пока оставили на JDK 17 и тоже все ок.

Когда снова увижу уведомление - сделаю скрип и постараюсь отложить логи Idea.

1 симпатия

Поймал тот нотификейшен.
Вот скрин при клике в нем на details.

Facet not load_

Андрей, добрый день!

Не уверен, что эта ошибка как-то вообще влияет на сборку, ведь сборку проводит gradle и от настроек/фасетов он зависеть не должен. Тем более если в gitlab все то же самое…
Коллеги подсказывают, что такая ошибка (с фасетами) может возникать, когда проект сначала открывается в ultimate идее, а потом в community, где чего-то нет. У вас, случаем, файлы проекта идеи не добавлены в гит?

По поводу основной проблемы топика:
Чтобы что-то сказать, нужно смотреть хотя-бы логи сборки, в результате которой отсутствуют persistence.xml и orm.xml

Без этого, увы, предположить, почему именно так происходит, не получается…

С уважением,
Дмитрий

С этим разобрались. В gitlab проблема была в том, что при сборке в нем подхватывался собранный основной фукциональный аддон из Package Registry GitLab. А в Package Registry он опубликовался уже без persistence.xml и orm.xml как раз с локального ПК.
В GitLab сейчас все гладко.

У вас, случаем, файлы проекта идеи не добавлены в гит?

Нет, там все по типовому gitignore. В git из идейных файлов только encoding.xml.
Переключения ultimate/community не было, а вот открытие проекта ultimate 2023.3 / 2024.2 - это да…

Но, похоже что действительно проблема где-то вокруг самой Idea…
Если присмотреться, то если выскочил этот нотификейшен про JPA facets, то Идею как-то “ведет”.
Например, в панели Jmix в перечне подпроектов стартер аддона может отображаться наряду с проектом самого аддона. Как будто импорт проекта gradle не завершился, хотя ни каких признаков активных процессов в Idea нет.

Плюс за пятницу и за сегодня обновленный на 1.6.1 проект получили еще на 2х ПК - там пока все гладко.

Прошу прощения за, скорее всего, ложную тревогу. Пойду для начала старые версия Idea у себя поудаляю…