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.