Maven II Jakub Wojtaszczyk Piotr Tabor
Plan ➢ Wstęp ➢ Porównamy Maven II i Anta ➢ Zainstalujemy Mavena II ➢ Stworzymy i obejrzymy „Pierwszy projekt” ➢ Omówimy mechanizmy wersje ➔ Wersje ➔ Repozytoria ➔ Fazy ➔ Stworzymy złożony projekt (JSF,EJB) ➔ Przejrzymy listę wtyczek ➔ Zapoponujemy zadania
Korzyści ● Automatyczne tworzenie projektu ● Automatyzacja powtarzajacych się zadań (budowanie, testowanie, publikowanie, itp.) ● Uniezależnić projekt od różnych środowisk developerskich (bez utraty korzyści ze spójnego środowiska) ● Odciążenie użytkownika od wszystkiego co da sie zautomatyzować ● Wprowadzić standardy organizacji projektu
Konwencje ● Układ katalogów projektu ● Jeden projekt – prawie zawsze jeden plik wynikowy (jar, war) – artefakt ● Nazewnictwo i konstrukcja plików wynikowych ● Jeden standard opisu projektu: POM – Project Object Model
A co z mrówkiem ? MAVEN ● Niezależny od systemu operacyjnego ● Język opisu projektu, zorientowny na dostarczenie spójnej informacji o cechach projektu – wtyczkom, które wykorzystają te mechanizmy na różnych sposób ● Deklaratywny (jak Prolog :) ) ANT ● Niezależny od systemu operacyjnego ● Język skryptowy z automatycznym sortowaniem topologicznym zadań ● Operacyjny (jak Bash)
Instalacja
Pierwszy projekt ● Tworzenie projektu ● Omówienie struktury katalogów ● Omówienie zawartości pliku POM ● Podłączenie projektu do Eclipsa ● Podłączenie projektu do NetBeana ● Podłączenie zależności ● Hello World ++ (ze stroną i dokumentacją)
Stabilne wersje artefaktów ● 1, 1.2.3, 1.2-beta ● Zapisywane są na repozytorium wersji stabilnych ● Nie powinny być modyfikowane po „udostępnieniu” - bo wersja powinna być jednoznaczna ● Mogą być zależnościami innych wersji stabilnych ● Powinny zależeć tylko od wersji stabilnych innych artefaktów
Rozwojowe wersje artefaktów (migawki) ● 1-SNAPSHOT, SNAPSHOT, 1.2-beta-SNAPSHOT ● Każdy build to „wersja”: (numer) - (data).(godzina)-(id) ● Zapisywane są na repozytorium wersji rozwojowych ● Mogą być dowolnie modyfikowane ● Maven uaktualnia je na żądanie (domyślnie raz dziennie) ● Nie mogą być zależnościami innych wersji stabilnych ● Mogą zależeć od wersji stabilnych i rozwojowych innych artefaktów ● Wersją stabilną po SNAPSHOT jest wersja 1.2.3
Repozytoria Maven'a ● Spójna organizacja plików ● Repozytoria światowe ( ● Repozytoria firmowe ● Repozytoria lokalne u użytkownika ● Automatyczna synchronizacja (w dół i w górę) ● Archiva
Project Object Model ● ● ●... ●......
Project Object Model
Project Object Model 3...
Jeszcze o zależnościach junit 4.0 jar test (compile, provided, runtime, test, system) ● Zależności są przechodnie
o fazach ● validate ● generate-sources ● process-sources ● generate-resources ● process-resources ● compilecompile the source code of the project. ● process-classes ● generate-test-sources ● process-test-sources ● generate-test-resources
o fazach 2 ● process-test-resources ● test-compile ● test ● prepare-package ● package ● pre-integration-test ● integration-test ● post-integration-testperform ● verify ● install ● deploy
O wtyczkach org.apache.maven.plugins maven-jar-plugin 2.0 test...
Bardziej skomplikowany przykład ● Projekty NIE są płaskie ● Aplikacja JSF – i działa ( ● Aplikacja EJB – i mamy oba jary gotowe
Co jeszcze Maven potrafi (przykłady) ● Przygotowywanie dystrybucji aplikacji (mvn assembly:assembly) ● Przygotowywanie release (mvn release:*) – Przygotowanie dystrybucji – Podbicie numerów wersji – Kompilacja i testy w piaskownicy – Odłożenie wersji w drzewie SVN – Wygenerowanie changelogów – Zamknięcie bugów w odpowienim systemie
Co jeszcze Maven potrafi (przykłady 2) ● Profile ● generowanie źródeł (xdoclet 1,2) ● obfuscator ● transformacje XSLT, generowanie klas JAXB ● uruchamianie Ant'a (antrun) ● deployowanie programowane na różnych serwerach aplikacji (cargo) ● Generowanie klas do obsługi WebServiców Axis, Axis2 (Java2WSDL, WSDL2Java) ●... dużo więcej
Wiedzieć więcej... ● Darmowa książka ( p) p ● Strona Mavena ( ● Google ( ;) ● Autorzy prezentacji (w szczególności przez najbliższe kilka minut) PYTANIA ?