Maven II Jakub Wojtaszczyk Piotr Tabor

1 Maven II Jakub Wojtaszczyk ([email protected])onufry@...
Author: Maria Michalik
0 downloads 3 Views

1 Maven II Jakub Wojtaszczyk ([email protected])[email protected] Piotr Tabor ([email protected])

2 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

3 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

4 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

5 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)

6 Instalacja

7 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ą)

8 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

9 Rozwojowe wersje artefaktów (migawki) ● 1-SNAPSHOT, 1.2.3-SNAPSHOT, 1.2-beta-SNAPSHOT ● Każdy build to „wersja”: 1.2.3 - 20070315.100503-63 (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 1.2.3-SNAPSHOT jest wersja 1.2.3

10 Repozytoria Maven'a ● Spójna organizacja plików ● Repozytoria światowe (http://ibiblio.org/maven2)http://ibiblio.org/maven2 ● Repozytoria firmowe ● Repozytoria lokalne u użytkownika ● Automatyczna synchronizacja (w dół i w górę) ● Archiva

11 Project Object Model ● ● 4.0.0 ●... ●......

12 Project Object Model 2.........

13 Project Object Model 3...

14 Jeszcze o zależnościach junit 4.0 jar test (compile, provided, runtime, test, system) ● Zależności są przechodnie

15 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

16 o fazach 2 ● process-test-resources ● test-compile ● test ● prepare-package ● package ● pre-integration-test ● integration-test ● post-integration-testperform ● verify ● install ● deploy

17 O wtyczkach org.apache.maven.plugins maven-jar-plugin 2.0 test...

18 Bardziej skomplikowany przykład ● Projekty NIE są płaskie ● Aplikacja JSF – i działa (http://wiki.apache.org/myfaces/MyFaces_Archetypes_for_Maven) ● Aplikacja EJB – i mamy oba jary gotowe

19 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

20 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

21 Wiedzieć więcej... ● Darmowa książka (http://www.mergere.com/m2book_download.js p)http://www.mergere.com/m2book_download.js p ● Strona Mavena (http://maven.apache.org) ● Google (http://google.com) ;)http://google.com ● Autorzy prezentacji (w szczególności przez najbliższe kilka minut) PYTANIA ?