Початок роботи з 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. Клацніть Далі.
- Вкажіть каталог, який містить директорію someco-mvn-tutorial-repo. Eclipse перевірить цю директорію та покаже ваш проект у списку проектів. Переконайтеся, що чекбокс поряд з ім'ям проекту вибраний і натисніть Далі.
- Eclipse покаже параметри панелі плагінів Maven. Нині можна спокійно проігнорувати її. Натисніть Готово.
У панелі Маркерів ви можете бачити список проблем Maven, що повідомляє, "Plugin execution не covered by lifecycle configuration".
Maven має проблеми з плагінами (set-version)
Для виправлення:
- Правий-клік на помилці та вибір "Quick Fix".
- Вибір "Переважно позначка goal set-version в pom.xml як не вказана в Eclipse build". Готово.
- Виберіть місце де знаходиться ваш POM (у мене це com.someco: someco-mvn-tutorial-repo: 1.0-SNAPSHOT) і натисніть OK.
- Правий-клік на проекті та вибір Maven, Update Project.
- Переконайтеся, що проект вибраний, натисніть OK.
Розуміння структури проекту
Структура каталогів вашого проекту трохи приємніша для вивчення у вашій 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.
Тепер ви розумієте, як створити проект для налаштувань рівня репозиторію. Погляньмо на рівень 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. Давайте зробимо це.
- File, New Maven Project.
- Виберіть каталог який містить директорію проекту "repo", натисніть Далі.
- Натисніть Configure і ми зможемо додати директорію Alfresco до списку.
- Натисніть Add Remote Catalog
- Виберіть "https://artifacts.alfresco.com/nexus/content/groups/public/archetype-catalog.xml" як Catalog File. Виберіть опис "Alfresco Archetypes". Після цього клацніть OK і OK знову ближче до панелі Preferences.
- Зараз оберіть "Alfresco Archetypes" у директорії і ви побачите купу архетипів у списку.
- Вибирайте "org.alfresco.maven.archetype" у фільтрі з'являться самі два архетипи як і на початку підручника.
- Вибирайте alfresco-amp-archetype і натисніть Далі.
- Виберіть "com.someco" для groupId, "someco-mvn-tutorial-share" як artifactId, і змініть alfresco_target_amp_client_war в "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 Ще варіант. Ви можете побачити ієрархію залежностей запустивши:
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.
Де знайти ще інформації
- Офіційна документація на Alfresco Maven SDK знаходиться за адресаою http://docs.alfresco.com .
- Більш детальну документацію по Alfresco Maven SDK можна знайти на artifacts.alfresco.com .
- Презентація Gab-а на Alfresco Summit Test-Driven, Rapid Development, і Continuous Delivery of Alfresco Solutions
- Instant Apache Maven Starter Книга Maurizio Turatti та Maurizio Pillitu може бути чудовим ресурсом, якщо ви зацікавлені у вивченні більшого про Apache Maven.
- Getting Started with Alfresco Development Презентація Gethin James'a з Alfresco Summit
- Alfresco Developer Series on ECM Architect містить вільні підручники з custom content models, actions, behaviors, workflows, і web-скриптам.