JavaRush /Java блог /Random UA /Початок роботи з Maven Alfresco SDK ч.2
CynepHy6
34 рівень
Великий Новгород

Початок роботи з Maven Alfresco SDK ч.2

Стаття з групи Random UA

Початок роботи з 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 не covered by lifecycle configuration".
у Maven проблеми з плагінами Maven має проблеми з плагінами (set-version)
Для виправлення:
  1. Правий-клік на помилці та вибір "Quick Fix".
  2. Вибір "Переважно позначка goal set-version в pom.xml як не вказана в 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 .
    • Ваш модуль може включати клієнтські ресурси, які мають бути розгорнуті в корінь веб-додатку. Вони знаходяться в 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
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ