Использование архетипа maven для создания проекта AEM

Когда мы создаем проект Maven AEM, как мы определяем, какой архетип использовать? Каковы решающие факторы и передовой опыт для этого?


person hbtolearn    schedule 22.07.2016    source источник


Ответы (1)


Базовую структуру можно найти в пространстве Adobe-Marketing-Cloud на Github - aem -проект-архетип

Это очень простая структура для начала, которая предоставляет вам следующие модули:

  • Core: Core bundle (здесь java-код)
  • it.launcher - Базовый пакет для поддержки тестов интеграции с AEM
  • it.test - Интеграционные тесты
  • ui.apps - Модуль для ваших компонентов, кода шаблона и т. д.
  • ui.content - образец / тестовое содержимое проекта или может быть фактическое содержимое (фактическое содержимое в кодовой базе не является хорошей практикой)

Перед принятием решения о структуре вашего проекта важно знать следующее:

  1. Реализация для нескольких брендов или для использования в нескольких проектах
  2. Есть ли необходимость в платформе, которая обеспечивает базовую / базовую функциональность / возможности, которые могут быть расширены различными реализациями?
  3. Какова дорожная карта проекта

Тем не менее, лучше всего разделить интерфейс и реализацию на разные модули. Большинство модулей будет иметь 3 подмодуля (api, core и package).

  • api: спецификация OSGi описывает модульную систему с отдельным пакетом api
  • core: Пакет реализации, предоставляющий услугу.
  • package: упаковка 2 пакетов для создания пакета содержимого AEM.

Также могут быть пакеты, содержащие содержимое без api / service. Такие модули не соответствуют соглашениям о пакетах osgi, например конфигурации, компонентам, дизайну и т. Д.

В большинстве наших реализаций AEM проект был создан на основе com.cqblueprints.archetypes: многомодульного архетипа Maven, а его структура папок была переработана в соответствии с рекомендациями по внедрению AEM 6. Все созданные модули предназначены для лучшей организации зависимостей и четкого разделения развертывания пакетов.

Количество модулей может варьироваться в зависимости от проекта, некоторые распространенные повторно используемые модули в качестве базового уровня могут включать:

1. build-settings

Эта папка может содержать часто используемые настройки и скрипты: - Скрипты / настройки сервера CI - Maven settings.xml - Многоразовый профиль bash, специфичный для проекта и т. Д.

2. Общий модуль

В нем будут [подмодули api, core и content]. Как следует из названия, в нем должны быть общие служебные или служебные классы, которые не принадлежат какому-либо модулю или могут использоваться во всех модулях. Будьте особенно осторожны и обосновывайте причину добавления классов в этот модуль, иначе как злоупотребление служебным положением все заканчивается в общем модуле.

3. Модуль пользовательского интерфейса

В нем будут [api (необязательно, если вам нужны службы OSGI), основные и контентные подмодули]. - Основной модуль содержит все ваши расширения SlingModel, WCMUse и поддержку Pojos. - Пакет содержимого, содержащий все ваши функции пользовательского интерфейса, связанные с компонентами, шаблонами. Важно правильно структурировать этот модуль, чтобы добавление компонентов, страниц и т. Д. Не делало его неуправляемым.


Мы создали следующую структуру в модуле контента, /apps/<your_project>/ui

  • компоненты: все компоненты идут сюда. Далее подкатегории [контент, глобальные, скрипты]
  • установить
  • page: компоненты страницы
  • шаблоны: шаблоны страниц

4. Модуль конфигураций

Этот модуль для переноса OSGI, облачных конфигураций, а также, если он реализован, реализаций на основе / conf. Пример реализации на основе Conf здесь

  • Модуль конфигураций OSGI: пакетный модуль со всеми конфигурациями в качестве содержимого.
  • Модуль облачной конфигурации: пакетный модуль со всеми конфигурациями в качестве содержимого

5. Модуль обработки ошибок стропа

Здесь должно находиться любое содержимое для обработки ошибок. Пример конфигурации имеет стек ошибок отображения в авторском режиме, а в режиме публикации возвращает ответ 404.

6. Модуль "Дизайн"

Здесь должно находиться любое содержимое для обработки ошибок. Пример конфигурации имеет стек ошибок отображения в авторском режиме, а в режиме публикации возвращает ответ 404.

7. Модуль содержания

Пакеты образцов содержимого и / или тестового содержимого. В некоторых реализациях мы решили сохранить тестовый контент как отдельный модуль.

8. Полный модуль

Это модуль пакета, который компилируется последним и объединяет все пакеты, сгенерированные в вышеуказанных модулях, в один пакет для развертывания на сервере.

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

  • Сборка Grunt / Gulp
  • Услуги / Операции (для бизнес-уровня)
  • Валидации
  • Импорт данных
  • Тесты в контейнере
  • Содержимое теста в контейнере

В дополнение к этому мы создали проект pom, который абстрагирует все зависимости, конфигурации, плагины, профили, специфичные для проекта AEM, и использовали его в качестве родительского для POM проекта. Это очистило проектную площадку и позволило повторно использовать проекты для одного и того же клиента.

Пример parent.pom здесь

person Ameesh Trikha    schedule 22.07.2016
comment
конечно, я создам образец структуры и поделюсь ею, когда у меня будет время. - person Ameesh Trikha; 22.07.2016