4.5.2. Создание компонентов приложения

В этом разделе описаны рекомендации по созданию компонентов приложения с целью повторного использования.

Правила именования
  1. Имя корневого пакета должно следовать нотации reverse-DNS, например, com.jupiter.amazingsearch.

    Имя корневого пакета не должно начинаться с имени любого другого компонента или приложения. К примеру, если корневой пакет вашего приложения com.jupiter.tickets, вы НЕ можете использовать пакет com.jupiter.tickets.amazingsearch для компонента. Это обусловлено тем, что Spring сканирует classpath бинов, начиная с указанного корневого пакета, и это сканирование должно быть уникальным для всех компонентов.

  2. Пространство имён используется в качестве префикса таблиц в базе данных, поэтому для публичных компонентов оно должно быть составным, к примеру, jptams, а не просто search. Это минимизирует риск совпадения имён между компонентов и конечным приложением. В пространстве имён запрещено использовать нижние подчёркивания и дефисы, только буквы и цифры.

  3. Значение Module prefix должно повторять пространство имён, но может при этом содержать дефисы, например, jpt-amsearch.

  4. Используйте namespace в качестве префикса имён бинов и свойств приложения, например:

    @Component("jptams_Finder")
    @Property("jptams.ignoreCase")
Установка в локальный Maven-репозиторий

Чтобы сделать компонент доступным для использования в проектах, расположенных на том же компьютере, установите его в локальный репозиторий Maven, выполнив команду CUBA > Advanced > Install app component в меню Studio. Данная команда просто запускает задачу Gradle install после остановки демонов Gradle.

Загрузка в удалённый Maven-репозиторий
  1. Создайте репозиторий, следуя инструкции в разделе Установка приватного репозитория артефактов.

  2. Укажите репозиторий и данные для входа в настройках вашего проекта вместо стандартного репозитория CUBA.

  3. Откройте файл build.gradle проекта компонента на редактирование и добавьте секцию uploadRepository в секцию cuba:

    cuba {
        //...
        // repository for uploading your artifacts
        uploadRepository {
            url = 'http://repo.company.com/nexus/content/repositories/snapshots'
            user = 'admin'
            password = 'admin123'
        }
    }
  4. Откройте проект компонента в Studio.

  5. Выполните задачу Gradle uploadArchives из командной строки. Артефакты компонента будут загружены в ваш репозиторий.

  6. Удалите артефакты проекта из локального Maven-репозитория, чтобы убедиться, что они будут загружены из удалённого репозитория при следующей сборке проекта приложения. Для этого просто удалите папку .m2/repository/com/company из домашнего каталога пользователя.

  7. Теперь при сборке и запуске приложения, использующего этот компонент, он будет скачиваться из удалённого репозитория.