Version 5, last updated by pipen at December 03, 2009 09:13 UTC
Plik aktualizowany PO zmianie podziale na moduły!
Projekt już jest na SVNie assemblowym więc sobie ściągnijcie. Łączy się z moją bazą danych na webio
I. Co jest potrzebne:
a) maven 2.0.x lub nowszy:
http://maven.apache.org/download.html
opis instalacji jest podany na tej samej stronie trochę niżej w sekcji Installation Instructions
b) Eclipse (albo NetBeans, ale tam nie testowałem, czy wszystko będzie chodzić, więc może na początek eclipse)
II. Odpalanie:
1) W eclipsie dodajemy repozytorium (window -> show view -> other, SVN, prawy przycisk i ADD)
2) Ściągamy projekt na dysk (jest w Trunk/fiveminutesmail/ )
3) Odpalamy KONSOLĘ (polecam CONSOLE2 (http://sourceforge.net/projects/console/) albo cygwina). Generalnie są pluginy do Eclipse wspierające mavena, ale mają sporo bugów, o czym sie przekonałem, więc lepiej na poczatek budować z konsoli.
4) Zakładając, że zainstalowaliśmy mavena przechodzimy do katalogu w którym jest projekt. Katalog powinien mieć w sobie plik pom.xml.
Plik pom.xml to tak jak build.xml dla ANTa. Nie musicie na razie do niego zaglądać. Wklepujemy:
mvn eclipse:eclipse
to polecenie wygeneruje nam projekty, który mozna zaimportować do eclipsa (przed nim jest taki mavenowy, nie ma .project, w repozytorium nie ma też bibliotek)
UWAGA: To polecenie będzie DŁUGO (nawet 20 min) trwało, gdyż maven musi dociągnąć z Internetu wszytskie potrzebne biblioteki zdefiniowane w POMie.Powinno już działać, ale na wszelki wypadek wklepujemy też:
mvn eclipse:configure-workspace -Declipse.workspace=C:\sciezkaDoWorkspace
które powinno ustawić wszystko w build path, jeżeli jeszcze nie jest dobrze ustawiony.
5) Teraz projekt można zaimportować do eclipse'a (File -> Import -> Existing project into workspace). Tamten sciagniety z repo mozna usunac z listy eclipsa (ale nie z dysku bo fizycznie to ten sam projekt, tylko jeden jest rozpoznawany jako eclipsowy)
UWAGA- ponieważ mamy na razie 3 moduły - WEB, DAO i MODEL to projekt zaimportuje się jako 3 projekty eclipse'a!!
6) Aby odpalić aplikację, można użyc serwera jetty (plugin do mavena). Przechodzimy do katalogu web i wklepujemy:
mvn jetty:run-war (to także zbuduje war-a)
lub
mvn jetty:run (na razie moze nie działać, ale będzie)
UWAGA: Tak jak wszytskie polecenia mavena, te też za pierwszym razem będzie odpalać się DŁUGO, bo maven dociąga wszytsko z Internetu.
Po tej operacji powinno się dać w mozilli zobaczyć stronkę na:
http://localhost:8080/login.jsp
login/haslo na admina: admin/admin, na usera: user/user
Na pewno o czymś zapomniałem, więc w razie problemów od razu piszcie!
III. Modułowa budowa projektu:
Projekt został według wskazówek prowadzacego podzielony na 3 moduły:
Web - wszytstko co z webem związane
Dao - warstwa dostępu do bazy danych
Model - warstwa modelu danych
Dzięki podziałowi, niemożliwe jest korzystanie z warstw wyższych w warstwach niższych (w drugą stronę jak najbardziej). Każdy moduł ma swój POM i się umie zbudować. Jeżeli zmieniliście coś tylko w Webie, nie ma potrzeby budowania też modelu -> modułowośc przyspiesza też budowanie.
Jeżeli zmienicie coś w modelu wykonujecie
mvn install
w katalogu modelu(tylko przebudowanie modelu), lub na całym projekcie (spowoduje zbudowanie i zainstalowanie jara w lokalnym repozytorium, przebudowanie wsyztskiego i zaktualizowanie zależności)
Generalnie aplikacja mieści się w webie, i on jest głównym modułem. Z niego wywołuje się np mvn jetty:run-war. Docelowo aplikację buduje się z głównego katalogu i wywołanie mvn install powinno zbudować war-a ze wsyztskich modułów (jeszcze nie wiem czy tak jest ;) )
----
IV. Co gdzie i jak w projekcie:
ApplicationContext.xml - plik springa, tutaj definiowane są zależności (IoC) które są wstrzykiwane. Można sobie wstrzykiwać przez settery, konstruktory i jak tam kto chce.
ApplicationResources_xx.properties - te pliki zawierają konfigurowalne ciagi znakowe. W warstwie prezentacji powinniśmy starać się uzywać predefiniowanych tutaj tekstów, tak, żeby można je było zmienić z poziomu konfiguracji a nie kodu, oraz aby można było dopisac tłumaczenia na inny język.
Struts.xml - ważny plik Frameworku, w którym definiujemy jaka klasa i jaka jej metoda jest wywoływana przy odpowiedniej akcji. Sama klasa akcji powinna zostać zdefiniowana jako Bean w applicationContext. Do _nazwy_ akcji można się odwoływać np. podczas wysyłania danych z formularza i klikania linków, menu itp.
Pliki .Action - akcje strutsowe, ich metody są wywoływane np. w momencie kliknięcia na link. Powinny zwracać stringa , np. predefiniowanego wyżej w hierarchi dziedziczenia SUCCESS, lub INPUT. W zależności od tego co zwróci akcja możemy wyświetlić różną stronę JSP (definiujemy to w struts.xml).
Wkrótce spróbuję dodać przykładowe pliki coś robiące, oraz tutorialik jak coś dodać, żeby każdy sobie obczaił.