Pierwsze kroki z Alfresco Maven SDK
Jeff Potts, styczeń 2014 <= Część 1- Pracujemy z Twoim projektem w środowisku IDE
- Zrozumienie struktury projektu
- Stworzenie projektu przystosowanego do dostępu Share
- Ogólne zależności projektu
- Cel WOJNY
- Spróbujmy tego: Tworzenie projektu Share przy użyciu archetypu
- Zrozumienie struktury katalogów Share Access
- Rozpoczęcie wewnętrznych testów na Share
- Zarządzanie zależnościami
- Inne tematy do samodzielnego studiowania
- Gdzie znaleźć więcej informacji
Pracujemy z Twoim projektem w środowisku IDE
Nie jest to konieczne, ale wiele osób woli pracować w IDE podczas konfigurowania Alfresco. Każde IDE to zrobi, ale jednym z najpopularniejszych jest Eclipse, więc zobaczmy, jak to działa.Używam wersji Kepler środowiska Eclipse Java EE IDE dla programistów internetowych. Posiada wbudowaną obsługę Mavena.
Aby otworzyć utworzony projekt, wykonaj następujące czynności:
- Plik, import, Maven, istniejące projekty Maven. Kliknij Następny.
- Określ katalog zawierający katalog Someco-mvn-tutorial-repo. Eclipse sprawdzi ten katalog i wyświetli Twój projekt na liście projektów. Upewnij się, że pole wyboru obok nazwy projektu jest zaznaczone i kliknij Dalej.
- Eclipse wyświetli ustawienia panelu wtyczek Maven. Możesz go teraz bezpiecznie zignorować. Kliknij Zakończ.
W panelu Znaczniki możesz zobaczyć listę problemów z Mavenem z informacją: „Wykonanie wtyczki nie jest objęte konfiguracją cyklu życia”.
Maven ma problemy z wtyczkami (wersja ustawiona)
Aby to naprawić:
- Kliknij błąd prawym przyciskiem myszy i wybierz opcję „Szybka naprawa”.
- Wybranie opcji „Trwale oznacz wersję zestawu celów w pom.xml jako ignorowaną w kompilacji Eclipse”. Gotowy.
- Wybierz lokalizację, w której znajduje się Twój POM (moja to com.someco: Someco-mvn-tutorial-repo: 1.0-SNAPSHOT) i kliknij OK.
- Kliknij projekt prawym przyciskiem myszy i wybierz Maven, Aktualizuj projekt.
- Upewnij się, że projekt jest wybrany i kliknij OK.
Zrozumienie struktury projektu
Struktura katalogów twojego projektu jest trochę przyjemniejsza do eksploracji w twoim IDE. Zobaczmy, co tu mamy.- pom.xml W katalogu głównym projektu znajduje się plik pom.xml. Mówi Mavenowi wszystko, co musi wiedzieć o Twoim projekcie. Czy pamiętasz jakieś ustawienia, o których zapomniałeś podczas tworzenia projektu z szablonu? Tutaj możesz dokonać zmian w ustawieniach. Przykładowo wersja 1.1.1 archetypu pozwala na współpracę z Alfresco Community Edition w wersji 4.2.e. Jeśli chcesz pracować z inną wersją - po prostu zmień kilka właściwości i powiedz Mavenowi, aby je zaktualizował, a on zajmie się resztą.
- src/main/java W tym miejscu powinieneś stworzyć własne pakiety, aby uporządkować swój kod Java. Są tu takie rzeczy, jak niestandardowe klasy wykonawców akcji, niestandardowe zachowania, kontrolery Java dla skryptów internetowych. Jeśli nie wiesz, o co w tym wszystkim chodzi, nie martw się, tutaj znajdziesz tutoriale . Pliki te zostaną ostatecznie umieszczone w pliku JAR. Kiedy AMP jest zainstalowany w Alfresco WAR, plik JAR będzie znajdować się w WEB-INF/lib .
- src/test Wszystko w src/test jest związane z wykonaniem testów. Same testy jednostkowe znajdują się w src/test/Java . Wszelkie zasoby potrzebne tym klasom będą znajdować się w src/test/resources. Wewnątrz src/test/properties/local zobaczysz plik alfresco-global.properties . Jeśli wiesz już cokolwiek o Alfresco, wiesz, że służy ono do konfiguracji serwera Alfresco. W tym przypadku służy to wyłącznie do uruchomienia serwera wbudowanego w celach testowych.
- src/main/amp Wszystko inne znajduje się gdzieś w tej części projektu. Struktura AMP jest tak dobrze udokumentowana, że nie chcę jej tutaj powielać. Wskażę tylko główne punkty:
- Plik module.properties informuje Alfresco o tym, co musi wiedzieć o AMP, np. o jego identyfikatorze, wersji, minimalnej i maksymalnej wersji Alfresco wymaganej do uruchomienia AMP oraz wszelkich innych AMP z tymi samymi zależnościami.
- Katalog config/alfresco/module/someco-mvn-tutorial-repo jest sercem AMP. Miejsce, w którym umieścisz konfiguracje plików Spring XML, model zawartości plików XML i konfigurację interfejsu użytkownika. Jak zobaczysz później, wolę oddzielić podkatalogi dla każdej z tych rzeczy.
- Jeśli Twój moduł zawiera skrypty internetowe lub przepływy pracy, nie są one zawarte w katalogu modułów. Zamiast tego znajdują się one w config/alfresco/extension/templates/webscripts i config/alfresco/extension/workflows .
- Twój moduł może zawierać zasoby klienta, które należy wdrożyć w katalogu głównym aplikacji internetowej. Znajdują się one w src/main/amp/web w katalogach css, jsp, scripts i image.
Teraz rozumiesz, jak utworzyć projekt dla ustawień na poziomie repozytorium. Przyjrzyjmy się poziomowi udostępniania. W ramach tego pokażę kolejną opcję tworzenia projektu bez wychodzenia z Eclipse.
Stworzenie projektu przystosowanego do dostępu Share
Po pierwsze musisz zrozumieć, że struktura projektu tworzonego na poziomie repozytorium jest dokładnie taka sama jak w przypadku projektu dla dostosowanej warstwy dostępu Share. W przyszłości Alfresco Maven SDK projekt Share będzie wyróżniać dwie rzeczy: zostaną wbudowane zależności projektu i AMP WAR.Ogólne zależności projektu
Zatrzymajmy się na chwilę i porozmawiajmy o zarządzaniu zależnościami. W tej chwili implementacja jest taka, że domyślnie skonfigurowany archetyp w projekcie pom.xml wykorzystuje zależności artefaktu repozytorium alfresco. W projektach współdzielonych nie ma tej zależności. Faktem jest, że wiele projektów współdzielonych w ogóle nie używa języka Java. Zmodyfikujmy teraz plik pom.xml i usuńmy zależności repozytorium alfresco. Spowoduje to, że komponenty demonstracyjne i powiązane z nimi klasy testowe wygenerują błąd podczas kompilacji. Można je usunąć.Cel WOJNY
Kolejną rzeczą wyróżniającą projekt Share jest WAR, w której wdrożony jest AMP. Zamiast WAR na świeżym powietrzu, tutaj musisz wdrożyć Udostępnij WAR. Można to skonfigurować we właściwości alfresco.client.war w pliku pom.xml. Domyślnie jest to ustawione na „na świeżym powietrzu”. W przypadku projektu Share musisz zastąpić go słowem „share”.Spróbujmy tego: Tworzenie projektu Share przy użyciu archetypu
Utwórzmy nowy projekt z Ustawieniami ogólnymi. Możesz przejść do wiersza poleceń i uruchomić to samo polecenie archetype, co poprzednio, z wyłączeniem nowego artifactId, a następnie zmienić właściwość alfresco.client.war na „share”. Jeśli nie używasz Eclipse, zrób to teraz i pomiń następną sekcję.Inną opcją jest skonfigurowanie Eclipse tak, aby można było utworzyć nowy projekt Alfresco przy użyciu pakietu Alfresco Maven SDK bez opuszczania IDE. Zróbmy to.
- Plik, Nowy projekt Maven.
- Wybierz katalog zawierający katalog projektu „repo” i kliknij Dalej.
- Klikamy Konfiguruj i możemy dodać katalog Alfresco do listy.
- Kliknij opcję Dodaj zdalny katalog
- Wybierz „https://artifacts.alfresco.com/nexus/content/groups/public/archetype-catalog.xml” jako plik katalogu. Wybierz opis „Archetypy na świeżym powietrzu”. Następnie kliknij OK i ponownie OK bliżej panelu Preferencje.
- Teraz wybierz w katalogu „Archetypy Alfresco”, a na liście zobaczysz kilka archetypów.
- Wybierz „org.alfresco.maven.archetype”, a w filtrze pojawią się te same dwa archetypy, co na początku tutoriala.
- Wybierz archetyp wzmacniacza alfresco i kliknij Dalej.
- Wybierz „com.someco” dla groupId, „someco-mvn-tutorial-share” jako artifactId i zmień alfresco_target_amp_client_war na „share”. Kliknij Zakończ.
Zrozumienie struktury katalogów Share Access
Jak wspomniałem wcześniej, struktura tego projektu jest dokładnie taka sama jak naszego projektu repo. Jedyna różnica polega na tym, że w projekcie repo takie rzeczy jak skrypty internetowe znajdują się w src/main/amp/config/alfresco/extension/templates/webscripts.W projekcie General będą one w src/main/amp/config/alfresco /web-extension/site-webscripts.Rozpoczęcie wewnętrznych testów na Share
Często będziesz pracować na obu poziomach ustawień jednocześnie. Twój poziom ogólny potrzebuje repozytorium wiadomości. Jednym ze sposobów, aby to zrobić, jest powiedzenie Mavenowi, aby rozpoczął projekt repo za pomocą:cd Someco-mvn-tutorial-repo test integracji mvn -Pamp-to-warA następnie uruchom projekt Share, używając:
cd Someco-mvn-tutorial-share test integracji mvn -Pamp-to-war -Dmaven.tomcat.port=8081Gdy oba serwery zostaną uruchomione, możesz otworzyć http://localhost:8081/share i zalogować się, aby przetestować moduł.
Zarządzanie zależnościami
Fajną rzeczą w Apache Maven jest to, że zarządza zależnościami twojego projektu za Ciebie. Wszystko, co musisz zrobić, to powiedzieć o nich Mavenowi, konfigurując plik pom.xml. Domyślnie zestaw Alfresco Maven SDK tworzy dwie zależności dla Twojego projektu: repozytorium alfresco i junit.Jak pisałem wcześniej projekt Alfresco Share nie jest zależny od repozytorium Alfresco więc dla projektu Someco-mvn-tutorial-share te zależności można usunąć. Ale co, jeśli chcę umieścić w moim projekcie Share elementy Java, takie jak skrypty internetowe oparte na Javie? W tym przypadku musimy dodać zależności.
Skrypty internetowe mogą działać na dowolnym poziomie. Jeśli w projekcie repo napiszesz skrypty internetowe oparte na Javie, klasa zostanie zbudowana, ponieważ zależności artefaktu repozytorium alfresco zależą z kolei od artefaktu spring-webscripts. Możesz to zobaczyć, jeśli otworzysz hierarchię zależności w Eclipse w pliku pom.xml:
Hierarchia zależności w Eclipse Inna opcja. Możesz zobaczyć hierarchię zależności, uruchamiając:
zależność mvn: listaAby więc dodać skrypty internetowe oparte na Javie do projektu Share, musimy dodać skrypty spring-webscript jako zależność. Możesz to zrobić, edytując plik pom.xml w następujący sposób:
<zależność> <groupId>org.springframework.extensions.surf</groupId> <artifactId>wiosenne skrypty internetowe</artifactId> <wersja>1.2.0-M14</wersja> <scope>pod warunkiem</scope> </zależność>Teraz skrypty internetowe oparte na Javie będą mogły znaleźć swoją klasę nadrzędną - DeclarativeWebScript.
Być może zastanawiasz się, skąd wiedziałeś, że klasa DeclarativeWebScript została uwzględniona w artefakcie spring-webscripts. Cóż, na przykład po znalezieniu go wchodząc na stronę http://artifacts.alfresco.com . Możesz wyszukiwać według klas, a zostaną wyświetlone wszystkie artefakty, które ją zawierają.
Inne tematy do samodzielnego studiowania
Teraz wiesz, jak używać pakietu Alfresco Maven SDK do tworzenia projektów oraz jako repozytorium Alfresco i konfigurować Alfresco Share. Jeśli dopiero zaczynasz przygodę z programowaniem Alfresco, mam nadzieję, że zgodzisz się, że naprawdę łatwo jest przygotować projekt na początek. Jeśli masz już okazję zapoznać się z Alfresco, ale nadal używasz starych pakietów SDK, mam nadzieję, że zmotywuje Cię to do przejścia na nowy SDK w celu tworzenia AMP.Istnieje wiele tematów, które nie zostały omówione w tym samouczku. Zostawiam je do sprawdzenia według własnego uznania. Tutaj jest kilka z nich:
- Zestaw Alfresco Maven SDK obsługuje dynamiczne przeładowywanie klas, gdy jest używany w połączeniu z narzędziem o nazwie JRebel .
- W tym samouczku omówimy archetyp AMP. Ale Alfresco Maven SDK zawiera inny archetyp zwany All-in-One. Ten archetyp zapewnia kompletną instalację Alfresco, w tym SOLR.
- Alfresco Maven SDK jest obsługiwany zarówno w wersji Community, jak i Enterprise Edition. Jeśli potrzebujesz pomocy przy uzyskiwaniu dostępu do artefaktów w wersji Enterprise, skontaktuj się z pomocą techniczną Alfresco.
Gdzie znaleźć więcej informacji
- Oficjalna dokumentacja zestawu SDK Alfresco Maven znajduje się pod adresem http://docs.alfresco.com .
- Bardziej szczegółową dokumentację dotyczącą zestawu SDK Alfresco Maven można znaleźć na stronie artifacts.alfresco.com .
- Prezentacja Gab na szczycie Alfresco Oparte na testach, szybkim rozwoju i ciągłym dostarczaniu rozwiązań Alfresco
- Instant Apache Maven Starter Książka Maurizio Turattiego i Maurizio Pillitu może być świetnym źródłem informacji, jeśli chcesz dowiedzieć się więcej o Apache Maven.
- Rozpoczęcie pracy nad rozwojem Alfresco Prezentacja Gethina Jamesa ze szczytu Alfresco
- Seria Alfresco Developer Series na platformie ECM Architect zawiera bezpłatne samouczki dotyczące niestandardowych modeli treści, działań, zachowań, przepływów pracy i skryptów internetowych.
GO TO FULL VERSION