JavaRush /Java блог /Архив info.javarush /Начало работы с Maven Alfresco SDK ч.2
CynepHy6
34 уровень
Великий Новгород

Начало работы с Maven Alfresco SDK ч.2

Статья из группы Архив info.javarush

Начало работы с Alfresco Maven SDK

Jeff Potts, Январь, 2014 <= ч.1
  • Работаем с вашим проектом в IDE
  • Понимание структуры проекта
  • Создание проекта адаптированного для Share доступа
  • Общие зависимости проекта
  • Цель WAR
  • Попробуем это: Создание Share проекта используя архетип
  • Разбираемся с структурой каталогов Share доступа
  • Запуск внутреннего тестирования на Share
  • Управление зависимостями
  • Другие темы для самостоятельного исследования
  • Где найти еще информации

Работаем с вашим проектом в IDE

В этом нет необходимости, но многие люди предпочитают работать в IDE когда настраивают Alfresco. Любая IDE сделает это, но одна из самых популярных - Eclipse так, что давайте посмотрим как это работает.
Я использую Kepler версию Eclipse Java EE IDE для Web Developers. Она поставляется с встроенной поддержкой Maven.
Для открытия созданного проекта, выполните следующее:
  • File, Import, Maven, Existing Maven Projects. Кликните Далее.
    Начало работы с Maven Alfresco SDK ч.2 - 1
  • Укажите каталог, содержащий директорию someco-mvn-tutorial-repo. Eclipse проверит эту директорию и покажет ваш проект в списке проектов. Убедитесь, что чекбокс рядом с именем проекта выбран и жмите Далее.
    Начало работы с Maven Alfresco SDK ч.2 - 2
  • Eclipse покажет настройки панели плагинов Maven. Сейчас можно спокойно проигнорировать ее. Жмите Готово.
    Начало работы с Maven Alfresco SDK ч.2 - 3
Теперь проект импортирован в ваше рабочее пространство Eclipse.
В панели Маркеров вы можете видеть список проблем Maven сообщающий, "Plugin execution not covered by lifecycle configuration".
у Maven проблемы с плагинами У Maven проблемы с плагинами (set-version)
Для исправления:
  1. Правый-клик на ошибке и выбор "Quick Fix".
  2. Выбор "Permanently mark goal set-version in pom.xml as ignored in Eclipse build". Готово.
  3. Выберите место где находится ваш POM (у меня это com.someco : someco-mvn-tutorial-repo : 1.0-SNAPSHOT) и жмите OK.
После пересборки проекта вы возможно увидите одну из последних проблем "Project configuration is not up-to-date with pom.xml". Для исправления:
  1. Правый-клик на проекте и выбор Maven, Update Project.
  2. Убедитесь, что проект выбран, жмите OK.
Теперь Eclipse скорее всего счастлив и единственные ошибки должны быть связаны с предупреждениями о некоторых неиспользуемых импортах Java.

Понимание структуры проекта

Структура каталогов вашего проекта немного более приятна для изучения в вашей IDE. Посмотрим, что у нас тут.
  • pom.xml В корне проекта вы видите pom.xml. Он сообщает Maven все что необходимо знать о вашем проекте. Вспомнили какие-то настройки забытые при создании проекта из шаблона? Вы можете внести изменения в настройках здесь. Для примера, версия 1.1.1 архетипа позволяет вам работать с Alfresco Community Edition версии 4.2.e. Если вы хотите работать с другой версией - просто измените несколько свойств и скажите Maven обновить их, а он позаботится об остальном.
  • src/main/java То место где вы должны создавать ваши собственные пакеты для организации вашего Java кода. Такие вещи как custom action executer classes, custom behaviors, Java контроллеры для web-скриптов находятся здесь. Ели вы не знаете, что это все такое - не парьтесь, есть доступные учебники здесь. Эти файлы в конечном итоге будут размещены в JAR. Когда AMP установится в Alfresco WAR, JAR будет находится внутри WEB-INF/lib.
  • src/test Все внутри src/test связано с выполнением тестирования. Сами юнит-тесты находятся в src/test/java. Любые ресурсы необходимые этим классам будут в src/test/resources. Внутри src/test/properties/local вы увидите файл alfresco-global.properties. Если вы уже знаете что-то об Alfresco вы знаете, что это используется для конфигурации сервера Alfresco. В этом случае это используется только для запуска встроенного сервера, для тестирования.
  • src/main/amp Все остальное находится где-то в этой части проекта. Структура AMP хорошо документирована так, что я не хочу дублировать ее тут. Укажу только на основные моменты:
    • Файл module.properties сообщает Alfresco, что ему необходимо знать об AMP такое как его ID, версию, минимальную и максимальную версию Alfresco необходимую ля запуска AMP, и любой другой AMPs с этими же зависимостями.
    • Каталог config/alfresco/module/someco-mvn-tutorial-repo это сердце AMP. То место, где вы разместите конфиги XML файлов Spring, контент модель XML файлов, и пользовательскую конфигурацию интерфейса. Как вы увидите позже, я предпочитаю разделять подкаталоги для каждой из таких вещей.
    • Если ваш модуль включает в себя web-скрипты или рабочие процессы (workflows), то они не содержатся в каталоге модулей. Вместо этого они находятся в config/alfresco/extension/templates/webscripts и config/alfresco/extension/workflows.
    • Ваш модуль может включать клиентские ресурсы, которые должны быть развернуты в корень web-приложения. Они находятся в src/main/amp/web в каталогах css, jsp, scripts, и images.
Вы должны проверить весь этот проект в системе управления версиями. Вы возможно захотите настроить ваш клиент системы контроля версий для игнорирования целевого каталога и каталога alf_data_dev.
Теперь вы понимаете как создать проект для настроек уровня репозитория. Давайте взглянем на уровень Share. В рамках этого я покажу еще один вариант создания проекта не выходя из Eclipse.

Создание проекта адаптированного для Share доступа

Во-первых вы должны понимать что структура для проекта который создается на уровне репозитория, точно такая же как и для проекта адаптированного длоя Share доступа. В перспективе Alfresco Maven SDK, есть две вещи отличающие Share проект: Зависимости проекта и WAR AMP-а будут встроены в.

Общие зависимости проекта

На минутку остановимся и поговорим об управлении зависимостями. На данный момент реализация такова, что по-умолчанию сконфигурированный архетип в проектном pom.xml использует зависимости артефакта alfresco-repository. Общие проекты не имеют такой зависимости. Факт, многие Общие проекты не используют Java вообще. Сейчас отредактируем pom.xml и удалим зависимости alfresco-repository. Это приведет к тому что демо-компоненты и ассоциированные тест классы выдадут ошибку при компилировании. Их можно удалить.

Цель WAR

Другая вещь которая отличает Share проект это WAR в который развертывается AMP. Вместо alfresco WAR здесь нужно развертываться в Share WAR. Это конфигурируется в свойстве alfresco.client.war в вашем pom.xml. По-умолчанию это устанавливается в "alfresco". Для Share проекта тут нужно заменить на "share".

Попробуем это: Создание Share проекта используя архетип

Давайте создадим новый проект с Общими настройками. Вы можете идти в командную строку и выполнить такую же команду архетипа как и выполняли ранее, исключая новый artifactId, и тогда изменить свойство alfresco.client.war на "share". Если вы не используете Eclipse, идите далее и сделайте это сейчас, пропустив следующий раздел.
Другим варианто является настройка Eclipse чтобы вы смогли создать новый проект Alfresco используя Alfresco Maven SDK не выходя из IDE. Давайте сделаем это.
  1. File, New Maven Project.
  2. Выберите каталог который содержит директорию проекта "repo", жмите Далее.
    Начало работы с Maven Alfresco SDK ч.2 - 4
  3. Щелкните Configure и мы сможем добавить директорию Alfresco в список.
    Начало работы с Maven Alfresco SDK ч.2 - 5
  4. Жмите Add Remote Catalog
  5. Выберите "https://artifacts.alfresco.com/nexus/content/groups/public/archetype-catalog.xml" как Catalog File. Выберите описание "Alfresco Archetypes". После, щелкайте OK и OK снова ближе к панели Preferences.
    Начало работы с Maven Alfresco SDK ч.2 - 6
  6. Сейчас выберите "Alfresco Archetypes" в директории и вы увидите кучу архетипов в списке.
  7. Выбирайте "org.alfresco.maven.archetype" в фильтре появятся те самые два архетипа как и в начале учебника.
  8. Выбирайте alfresco-amp-archetype и жмите Далее.
    Начало работы с Maven Alfresco SDK ч.2 - 7
  9. Выбор "com.someco" для groupId, "someco-mvn-tutorial-share" как artifactId, и смените alfresco_target_amp_client_war в "share". Жмите Готово.
    Начало работы с Maven Alfresco SDK ч.2 - 8
Теперь ваш проект Share доступа находится в рабочей области. В следующий раз при создании нового проекта используя архетип потребуется немного меньше шагов потому, что вам не понадобится добавлять каталог.

Разбираемся с структурой каталогов Share доступа

Как я упоминал ранее структура этого проекта такая же точно, как и нашего репо-проекта. Только дно отличие - стоит отметить, что такие вещи в репо-проекте как web scripts находятся внутри src/main/amp/config/alfresco/extension/templates/webscripts.В Общем проекте они будут в src/main/amp/config/alfresco/web-extension/site-webscripts.

Запуск внутреннего тестирования на Share

Часто вы будете одновременно работать на обоих уровнях настроек. Вашему Общему уровню необходим репозиторий для сообщений. Один из путей сделать это - сообщить Maven стартовать ваш репо-проект используя:
cd someco-mvn-tutorial-repo
mvn integration-test -Pamp-to-war
И тогда запускать ваш Share проект используя:
cd someco-mvn-tutorial-share
mvn integration-test -Pamp-to-war -Dmaven.tomcat.port=8081
Когда оба сервера поднимутся, вы можете открыть http://localhost:8081/share и логиниться для тестирования вашего модуля.

Управление зависимостями

Клевая штука в Apache Maven то, что он управляет зависимостями вашего проекта для вас. Все что вам надо - это сообшить Maven о них сконфигурировав ваш pom.xml. По-умолчанию, Alfresco Maven SDK создает две зависимости для вашего проекта: alfresco-repository и junit.
Как я писал ранее, проект Alfresco Share не зависит от репозитория Alfresco так, что для проекта someco-mvn-tutorial-share, эти зависимости можно удалить. Но что если я захочу положить несколько вещей Java в мой Share проект, например web-скрипты на основе Java? В этом случае нам необходимо добавить зависимости.
Web-скрипты могут работать в любом уровне. Если вы пишете Java-based web-скрипты в вашем репо-проекте, класс соберется потому, что зависимости артефакта alfresco-repository в свою очередь зависят от артефакта spring-webscripts. Вы можете увидеть это если откроете Dependency Hierarchy в Eclipse в вашем файле pom.xml:
Иерархия зависимостей в Eclipse
Иерархия зависимостей в Eclipse Еще вариант. Вы можете увидеть иерархию зависимостей запустив:
mvn dependency:list
Итак, для добавления Java-based web-скриптов в ваш Share проект, нам необходимо добавить spring-webscripts как зависимость. Вы можете сделать это редактируя pom.xml, так:
<dependency>
    <groupId>org.springframework.extensions.surf</groupId>
    <artifactId>spring-webscripts</artifactId>
    <version>1.2.0-M14</version>
    <scope>provided</scope>
</dependency>
Теперь Java-based web-скрипты смогут найти свой родительский класс - DeclarativeWebScript.
Вы можете быть удивлены как вы должны были узнать, что класс DeclarativeWebScript был включен в артефакт spring-webscripts. Ну например найдя го пройдя на http://artifacts.alfresco.com. Вы можете сделать поиск по классу и вам покажут все артефакты которые содержат его.

Другие темы для самостоятельного исследования

Вы теперь знаете как использовать Alfresco Maven SDK для создания проектов и в качестве вашего репозитория Alfresco и настройки Alfresco Share. Если вы новичок в разработке под Alfresco, я надеюсь вы согласитесь, что это реально легко собрать проект для начала работы. Если вы уже набили руку в Alfresco но все еще используете старые SDK я надеюсь это мотивирует вас перейти на новый SDK для создания ваших AMP.
Есть много тем, которые не были охвачены в этом учебнике. Я оставлю их вам для самостоятельного исследования по своему усмотрению. Вот некоторые из них:
  • Alfresco Maven SDK поддерживает динамическую перезагрузку класса когда используется в сочетании с инструментом называющемся JRebel.
  • Этот учебник охватывает архетип AMP. Но Alfresco Maven SDK включает в себя еще другой архетип под названием All-in-One. Этот архетип дает вам полную установку Alfresco включая SOLR.
  • Alfresco Maven SDK поддерживается в обоих редакциях Community Edition и Enterprise Edition. Если вам необходима помощь в доступе к артефактам в Enterprise Edition, обратитесь в Alfresco Support.

Где найти еще информации

<= ч.1
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ