Композитные проекты

Studio позволяет разрабатывать несколько дополнений и приложений в рамках одного проекта IDE, даже если они расположены в разных репозиториях исходного кода.

Чтобы создать композитный проект, запустите мастер создания проекта и выберите шаблон Composite Project. Studio создаст проект со следующей структурой (для примера взято имя проекта demo):

root-dir/
    demo-all/
        build.gradle
        settings.gradle

После этого вы можете создавать или добавлять подпроекты, используя действие New → Subproject в Окне инструментов Jmix. Мы рекомендуем размещать подпроекты внутри корневого каталога рядом с проектом-агрегатором <project-name>-all.

Studio отображает композитный проект и все подпроекты в виде узлов верхнего уровня в Окне инструментов Jmix:

composite projects structure

Вы можете редактировать общие свойства всех подпроектов. Нажмите Settings → Project Properties на панели инструментов Окна инструментов Jmix. Выберите All subprojects, когда Studio спросит вас, какой проект нужно отредактировать:

composite project edit properties

Общие свойства включают в себя настройки репозитория артефактов и версию фреймворка Jmix. Таким образом, вы можете сразу обновить все подпроекты до более новой версии Jmix.

Studio может генерировать файлы Liquibase changelog в дополнениях, в том числе при работе с ними в композитных проектах.

Чтобы сгенерировать файл changelog, в дополнении нужно определить хранилище данных. Оно будет отображено в дереве Jmix:

add on data store

Настройки хранилища будут сохранены в файле jmix-studio.xml вместо конфигурации Java.

Теперь в хранилище данных можно выполнить действие Generate Liquibase Changelog.

В композитном проекте необходимо снова указать хранилище данных для того же дополнения, поскольку композитный проект имеет свой собственный файл jmix-studio.xml, расположенный в проекте-агрегаторе <project-name>-all. Таким образом, настройки хранилища данных при работе над дополнением в отдельном и композитном проектах будут храниться отдельно, но набор сгенерированных changelogs будут одинаковыми.