Laboratorium Zarządzanie konfiguracją projektu: Maven i Spring.
Transkrypt
Laboratorium Zarządzanie konfiguracją projektu: Maven i Spring.
Laboratorium Zarządzanie konfiguracją projektu: Maven i Spring. Głównym celem laboratorium jest zapoznanie studenta z podstawowymi mechanizmami zarządzania konfiguracją projektu informatycznego z wykorzystaniem repozytorium Maven oraz framework-a Spring. Projekt o nazwie Ssheet (na potrzeby tych laboratoriów) to arkusz kalkulacyjny, którego architektura ma umożliwiać zdalny i współbieżny dostęp. Zajęcia obejmują implementację uproszczonej warstwy logiki (tzn. silnik arkusza). Schemat architektury powyższej aplikacji został przedstawiony na Ilustracja 1. Ilustracja 1: Architektura projektu Ssheet Laboratorium m.in. obejmuje następujące zagadnienia: 1. Praca z pośredniczącym repozytorium Maven - Artifactory. 2. Spring Beans i Dependency Injection. 3. Testy jednostkowe - JUnit (+ biblioteka Mockito) Materiały pomocnicze 1. Maven: http://maven.apache.org/ http://coach.kis.p.lodz.pl/maven.pdf 2. Artifactory: http://wiki.jfrog.org/confluence/display/RTF/Using+Artifactory szczegółowe informacje dotyczące konfiguracji (dla chętnych): http://wiki.jfrog.org/confluence/display/RTF/Working+with+Maven 3. Spring: http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/beans.html http://www.vogella.com/articles/SpringDependencyInjection/article.html więcej informacji: http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/ 4. JUnit: http://www.vogella.com/articles/JUnit/article.html http://www.asjava.com/junit/junit-tutorials-and-example/ 5. Mockito: http://docs.mockito.googlecode.com/hg/latest/org/mockito/Mockito.html Instalacja SpringToolsSuite Przed zapoznaniem się z zadaniami do wykonania i rozpoczęciem pracy zainstaluj Spring Tool Suite zgodnie z informacjami na stronie: http://www.springsource.org/STS-installation-instructions (Eclipse Juno Update Site: http://dist.springsource.com/release/TOOLS/update/e4.2) Zadania: W celu przygotowania środowiska pracy utwórz w repozytorium w folderze trunk podfolder labssheet (import lub checkout i commit). W razie potrzeby możesz usunąć wcześniejszą zawartość folderu trunk. Nad poniższym projektem pracuj w kopii roboczej folderu lab-ssheet commitując zmiany w czasie trwania laboratorium. Zadanie 1 – nadrzędny projekt Maven 1. Utwórz folder ssheet-root i skopiuj do niego plik konfiguracyjny Maven-a: http://coach.kis.p.lodz.pl/ssheet/pom.xml 2. W środowisku EclipseIDE dokonaj importu projekt Mavena wskazując na folder ssheetroot:. 3. Zapoznaj się z konfiguracją w pom.xml. Będzie ona podstawą kolejnych projektów, nad którymi będziesz pracować. 4. Zainstaluj artefakt w lokalnym repozytorium: maven install. Znajdź wygenerowany artefakt w katalogu domowym użytkownika w podkatalogu .m2 (~/.m2). Zadanie 2 – utworzenie modułu Ssheet 1. Zapoznaj się z dokumentacją projektu ssheet-core: http://coach.kis.p.lodz.pl/ssheet/doc/ w szczególności zwracając uwagę na interfejsy: • ISpreadsheetCellsAPI – API warstwy logiki dostępne z kontrolerów, • ILogicalAddressingMapper – mapowanie adresów logicznych do warstwy danych, • IFormulaEvaluator – ewaluacja formuł z komórek arkusza, • IFunctionsService – przykładowy zestaw funkcji dla ewaluatora, • ISsheetSession – zarządzanie sesją użytkownika (planowane na przyszłość), • IBasicSpreadsheet – API warstwy danych. 2. Uzgodnij z prowadzącym, które interfejsy zaimplementujesz w ramach Twojego modułu, szczegóły dotyczące implementacji, nazwę klas i artefaktu Mavena. 3. Utworz nowy prosty projekt Mavena (opcja Create a simple project). a) ustaw lokalizacje na podfolder ssheet-root o nazwie odpowiadającej funkcjonalności modułu. b) w oknie konfiguracji Artefaktu, ustaw Parent Project na ssheet-root (opcje Browse...). c) użyj tego samego identyfikatora grupy jak w ssheet-root. 4. Zapoznaj się z artefaktami znajdującymi się w repozytorium libs-snapshot-local na Artifactory (np. Browse Tree): http://team.kis.p.lodz.pl:8081/artifactory 5. Do konfiguracji pom.xml swojego modułu dodaj zależność do artefaktu ssheet-core. (skorzystaj z kodu wygenerowanego w Artifactory). 6. W Maven Dependencies projektu odnajdź jara ssheet-core. W menu kontekstowym w opcjach Maven wybierz Download Sources. 7. Zaimplementuj wybrane interfejsy: • skorzystaj z wskazówek Implementation hints w dokumentacji (jeśli są), • potrzebne komponenty do realizacji zadań umieść jako prywatne atrybuty klas oraz wygeneruj do nich setter-y, aby umożliwić Dependency Injection, • pozostaw domyślny (pusty) konstruktor. 8. Opracuj przynajmniej jeden test jednostkowy JUnit dla wybranej metody. Skorzystaj z kreatora New → JUnit Test Case, (zwróć uwagę na opcję Class under test...). Uruchom zadanie maven test (Run as...). WSKAZÓWKA: Podstawowe typy testów: https://pl.wikipedia.org/wiki/Test_jednostkowy 9. Zainstaluj artefakt w lokalnym repozytorium: maven install. Zadanie 3 – deploy do Artifactory 1. pom.xml projektu ssheet-root zawiera postawową konfigurację konieczną do wykonania zadania maven deploy w tagu distributionManagement. Niemniej jednak wymagane jest uzupełnienie konfiguracji o dane autentykacyjne, które umieszcza się w pliku settings.xml w katalogu lokalnego repozytorium mavena (~/.m2). Znajdują się one w tagu servers w pliku: http://coach.kis.p.lodz.pl/ssheet/settings.xml Jeżeli plik settings.xml istnieje uzupełnić go o brakujące informacje, w przeciwnym razie skopiować cały plik. 2. W EclipseIDE Window->Preferences->Maven->User Settings uruchom Update Settings. Można również edytować plik settings.xml w Eclipse (opcja open file...). 3. W Run Configurations... utworz nowe zadanie typu Maven build z celem 'clean source:jar deploy'. Uruchom je i zweryfikuj czy artefakt pojawił się w repozytorium Artifactory. 4. Zacommituj kod źródłowy swojego modułu na svn, żeby wszyscy mieli do niego dostęp. Zadanie 4 – integracja i Spring 1. Utworz nowy projekt Mavena. a) ustaw lokalizacje na podfolder ssheet-root o nazwie odpowiadającej całej aplikacji ssheet. b) wyszukaj i użyj archetyp bazujący na springu (np. spring-mvc-archetype). c) w oknie konfiguracji Artefaktu użyj tego samego identyfikatora grupy jak w ssheet-root. 2. W konfiguracji pom.xml ustaw Parent Project na ssheet-root (skopiuj odpowiedni tag z pom.xml w module z Zadania 2). 3. Wyszukaj w repozytorium Artifactory artefakty zawierające potrzebne komponenty do implementacji warstwy logiki Ssheet. Dołącz zależności do tych projektów w konfiguracji Mavena. 4. Używając mechanizmu Dependency Injection Springa zintegruj komponenty i zbuduj warstwy logiki i danych Ssheet. WSKAZÓWKA: Sugeruję wykorzystanie konfiguracji XML-owej ponieważ jako jedyna daje możliwość zmiany konfiguracji bez potrzeby korzystania z kompilatora Java. 5. Napisz aplikację lub test sprawdzający działanie. Zadanie 5 – Aspektowość Wykorzystując programowanie aspektowe i Spring-a dodaj funkcjonalność zapisywania historii zmian zawartości komórek w postaci logów. Do logowania możesz użyć np. następujących bibliotek: • Simple Logging Facade for Java - http://slf4j.org/ • Apache Log4j 2 - http://logging.apache.org/log4j/2.x/ Zadanie 6 – Hibernate Zaprojektuj i zaimplementuj trwałą warstwę danych dla arkusza kalkulacyjnego (podstawowy interfejs IBasicSpreadsheet) wykorzystując mapowanie obiektowo-relacyjne Hibernate.