MAVEN 2 Prezentacja przygotowana na potrzeby przedmiotów: Sieciowe Systemy Baz Danych Biznesowe Aplikacje Rozproszone Wielowarstwowe Aplikacje Sieciowe 1
Podstawowe informacje o konfiguracji środowiska i Maven WSTĘP 2
Literatura podstawowa Maven: The Definitive Guide http://www.sonatype.com/books/maven-book/reference/public-book.html Developing with Eclipse and Maven http://www.sonatype.com/m2eclipse/documentation/downloadbook?file=books/m2eclipse-book.pdf Opisy wtyczek http://maven.apache.org 3
Konfiguracja środowiska programistycznego Pobierz Maven2 ze strony http://maven.apache.org Zainstaluj Maven2 w maven_home Dodaj ścieżkę maven_home/bin do PATH (uwaga Linux/Windows) Ustal lokalizację JDK w zmiennej środowiskowej JAVA_HOME 4
Maven w Netbeans IDE Zainstaluj plugin Maven w NetBeans (Tools Plugins) Sprawdź czy w Tools Options Miscellaneous znajduje się zakładka Maven Na zakładce Maven podać lokalizację maven_home (o ile NetBeans sam nie wykrył Maven-a po PATH) 5
Maven w Eclipse IDE Pobierz plik archiwum z Eclipse. Dla przykładowej instalacji jako baza posłużyła wersja Eclipse 3.5 JavaEE (Galileo) Zainstaluj Mylyn dla Eclipse 3.5: http://download.eclipse.org/tools/mylyn/update/e3.5 Zainstaluj AspectJ dla Eclipse 3.5 http://download.eclipse.org/tools/ajdt/35/update Zainstaluj Subclipse 1.6 http://subclipse.tigris.org/update_1.6.x Zainstaluj GEF dla Eclipse 3.5 http://download.eclipse.org/tools/gef/updates/releases/ Zainstaluj m2eclipse http://m2eclipse.sonatype.org/update/ 6
Maven w Eclipse IDE W konfiguracji Eclipse jako masznę JAVA podać tę z pakietu JDK (eclipse.ini), np.: -vm e:\programs\java\jdk1.6.0_14\bin\javaw.exe Dodać ścieżkę w Window Preferences Maven Installations do katalogu w którym zainstalowano maven2 Uwaga! Warto wyłączyć automatyczne budowanie projektu w Eclipse 7
Trzy podstawowe cykle: clean default site Maven: cykle Więcej informacji (google: maven phases) http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#lifecycle_reference Cykl default ma inaczej przywiązane cele do faz w zależności od wartości <packaging> patrz pom.xml 8
Maven: fazy Przykładowe fazy: mvn compile mvn test-compile Do każdej fazy mogą być przywiązane cele wtyczek FAZA compile CEL compiler:compile CEL inny:cel 9
Maven: wtyczki (ang. plugins) i cele (ang. goals) maven-compiler-plugin, po każdym poleceniu sprawdź zawartość katalogu target mvn clean (faza clean) mvn compiler:compile (cel compile wtyczki mavencompiler-plugin) mvn compiler:testcompile PLUGIN CEL CEL CEL 10
Maven domyślny cykl dla jar/war/ejb/ejb3/rar/par process-resources resources:resources test surefire:test compile compiler:compile package jar:jar process-test-resources resources:testresources install install:install test:compile compiler:testcompile deploy deploy:deploy 11
TODO Modyfikacja cyklu, przypinanie celów do faz 12
Podstawowe informacje o sposobie tworzenia projektów MAVEN TWORZENIE PROJEKTU 13
Uwagi wstępne Projekty można tworzyć z poziomu: Środowiska programistycznego Linii poleceń i samego maven-a Projekty tworzy się na podstawie tzw. archetypów np.: Dla aplikacji bazującej na spring Dla modułu EJB Dla aplikacji WEB itd. Środowisko programistyczne tak naprawdę wykorzystuje te archetypy i maven-a do utworzenia określonego typu projektu (sprawdź komunikaty) 14
Projekt nadrzędny (POM) Utworzyć nowy projekt Maven NB: File New Project (Ctrl+Shift+N) Eclipse: File New Project (Alt+Shift+N) Wybrać Maven Project Wybrać archetyp (można przeszukiwać listę) groupid: org.codehouse.mojo.archetypes artifactid: pom-root Uwaga: NB na liście wyświetla nazwy archetypów a nie ich Id, np.: POM Root Archetype. Część archetypów jest wyróżniona i nie trzeba ich wyszukiwać. 15
Identyfikacja artefaktu w Maven Każdy artefakt ma swój unikalny identyfikator groupid: nazwa grupy artefaktów artifactid: nazwa artefaktu version: wersja artefaktu Wersja finalna np.: 1.0.0 Wersja robocza np.:1.0.0-snapshot Dodatkowe informacje o projekcie nie są konieczne name: nazwa artefaktu/projektu Maven url: np. lokalizacja strony projektowej Więcej informacji o pom: http://maven.apache.org/pom.html 16
Docelowa struktura projektów SUPERPOM Projekt nadrzędny (POM) Podprojekt (JAR) Podprojekt (WAR) Podprojekt EJB (JAR) Podprojekt (EAR) 17
SUPERPOM Jest to podstawowa konfiguracja dostarczana przez konkretną dystrybucję maven Kolejne wydanie maven może używać nowszych wtyczek (o wyższych numerach wersji) niż to z którego aktualnie korzystasz. Jeżeli coś działało w wersji, której do tej pory używałeś, to nie znaczy że będzie działało w wersji nowszej. Wniosek: zawsze podawaj numery wersji wtyczek w pom.xml Więcej informacji: http://maven.apache.org/guides/introduction/introduction-tothe-pom.html 18
Projekt nadrzędny (POM) Do podania są następujące wartości: lokalizacja projektu na dysku grupid artifactid (nazwa projektu w IDE) wersja Plik pom.xml powinien mieć następującą postać: <modelversion>4.0.0</modelversion> <groupid>zsk.samples</groupid> <artifactid>nazwaprojektu</artifactid> <packaging>pom</packaging> <version>1.0-snapshot</version> <name>nazwaprojektu Multi Project</name> <url>http://maven.apache.org</url> 19
Projekt typu JEE 5 Enterprise (EAR) Projekt typu EAR składa (ang. assembly) dostępne moduły (artefakty) w archiwum EAR File New Project (Ctrl+Shift+N) Wybrać Maven Project i Next Rozwinąć listę: Archetypes from Remote Maven Repositories (można wpisywać nazwę archetypu Quick Search) Wybrać z listy: JEE 5 EAR Archetype i Next Podać: nazwę projektu, lokalizację, grupę, wersję i zatwierdzić Finish 20
Projektu typu UTILITY (JAR) File New Project (Ctrl+Shift+N) Wybrać Maven Project i Next Wybrać Maven Quickstart Archetype i Next Podać: nazwę projektu, lokalizację, grupę, wersję i zatwierdzić Finish Zmienić wersję Java na wymaganą, np.:1.5 (Project Properties Sources) 21
Projekt JEE 5 EJB (JAR) File New Project (Ctrl+Shift+N) Wybrać Maven Project i Next Rozwinąć listę Archetypes from Remote Maven Repositories Wybrać z listy JEE 5 ejb jar archetype (można wpisywać nazwę archetypu Quick Search) i Next Podać nazwę projektu, lokalizację, grupę, wersję i zatwierdzić Finish 22
Projekt JEE 5 Web (WAR) File New Project (Ctrl+Shift+N) Wybrać Maven Project i Next Rozwinąć listę Archetypes from Remote Maven Repositories Wybrać z listy JEE 5 web application archetype (można wpisywać nazwę archetypu Quick Search) i Next Podać nazwę projektu, lokalizację, grupę i wersję i zatwierdzić Finish Z Project Properties Frameworks dodać framework web którego będziemy używać w projekcie 23
Konfiguracja projektu EAR Dodaj jako zależności moduł ejb i moduł web <dependency> <groupid>pl.szsk.was</groupid> <artifactid>webmodule</artifactid> <version>1.0-snapshot</version> <type>war</type> </dependency> <dependency> <groupid>pl.szsk.was</groupid> <artifactid>ejbmodule</artifactid> <version>1.0-snapshot</version> <type>ejb</type> </dependency> Zwróć uwagę na <type> 24
Konfiguracja maven-ear-plugin Dodaj do pliku pom wtyczkę maven-ear-plugin W konfiguracji wtyczki należy dopisać: <modules> <webmodule> <groupid>pl.szsk.was</groupid> <artifactid>webmodule</artifactid> </webmodule> <ejbmodule> <groupid>pl.szsk.was</groupid> <artifactid>ejbmodule</artifactid> </ejbmodule> /modules> Powyższe moduły zostaną załączone do archiwum EAR w formie spakowanej (jar i war) EAR może zawierać 0..1 moduł WEB (war), 0..N modułów EJB (jar) i 0..N innych bibliotek JAR 25
Budowa aplikacji EJB3/3.1 W przypadku gdy chcemy aby moduły EJB i WEB nie były umieszczane razem w formie jednej aplikacji EAR, to pojawia się problem związany z zależnościami. Aplikacja WEB musi zawierać część kodu aplikacji EJB, a dokładniej specyfikację interfejsów komponentów EJB z których będzie korzystać. Projekt Maven dla EJB musi więc, oprócz zbudowania aplikacji EJB, wygenerować także archiwum jar zawierające te interfejsy. Konfigurację maven-ejb-plugin dla takiego przypadku przedstawiono na następnym slajdzie 26
Konfiguracja maven-ejb-plugin Ustawić wartość generateclient na true Wskazać w <clientincludes> co ma zostać umieszczone w kliencie <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-ejb-plugin</artifactid> <configuration> <generateclient>true</generateclient> <clientincludes> <!--Dołącz do klienta tylko "zdalne interfejsy"--> <clientinclude> pl/zsk/sos/ejb/endpoint/*remote.class </clientinclude> </clientincludes> <ejbversion>3.0</ejbversion> </configuration> </plugin> 27
Konfiguracja projektu WEB W projekcie aplikacji WEB należy dodać zależność względem wcześniej wygenerowanego klienta aplikacji EJB wartość <type> ustawiona na ejb-client <dependency> <groupid>${project.groupid}</groupid> <artifactid>ejbmodule</artifactid> <version>${ejbmodule.ver}</version> <type>ejb-client</type> </dependency> Maven wie, że nie należy dołączać archiwum jar z aplikacją EJB tylko archiwum jar klienta tej aplikacji. Zwróć uwagę na możliwość zastosowania: parametru EjbModule.ver, który zostały zdefiniowany w pliku konfiguracyjnym nadrzędnego projektu maven (pom) parametru standardowego project.groupid 28
Parametryzacja projektów maven PARAMETRY 29
Parametry standardowe Odwołanie do parametru ma postać ${nazwa_parametru} Standardowo dostępne wartości: project.* - wartości z Maven POM np: settings.* - ustawienia z settings.xml env.* - zmienne środowiskowe java.lang.system UWAGA: Podane w prezentacji adresy url mogą się zmienić z uwagi na zmianę obowiązującej wersji maven. Bazowy adres to: http://maven.apache.org/ref 30
Parametry standardowe: project http://maven.apache.org/ref/2.2.0/mavenmodel/maven.html Najczęściej wykorzystywane wartości project.* artifactid groupid version build.* directory sourcedirectory 31
Parametry standardowe: settings http://maven.apache.org/ref/2.2.0/mavensettings/settings.html Generalnie bardzo rzadko wykorzystuje się w ustawieniach projektu wartości z settings.xml Najczęściej wykorzystywane wartości z settings.* localrepository offline Za to bardzo wygodnie jest tam wpisać dane uwierzytelniające w sekcji <servers> dla wykorzystywanych serwerów podanych w sekcji <distributionmanagement> pliku pom.xml 32
Parametry standardowe: env Najczęściej wykorzystywane wartości env.* path home java_home Jeżeli to tylko możliwe, powinno się używać wartości dostępnych poprzez java.lang.system 33
Parametry standardowe: java.lang.system Wartości bardzo często wykorzystywane Najbardziej popularne to: java.version java.home user.home user.dir line.separator file.separator os.* 34
Parametry użytkownika Można definiować własne parametry Wykorzystywane podczas filtrowaniu konfiguracji projektu i przy Przykład definicji: <properties> <EJBModule.ver>1.0-SNAPSHOT</EJBModule.ver> <WEBModule.ver>1.0-SNAPSHOT</WEBModule.ver> </properties> Przykład użycia: <dependency> <groupid>pl.szsk.was</groupid> <artifactid>webmodule</artifactid> <version>${webmodule.ver}</version> <type>war</type> </dependency> 35
Filtrowanie Proces podstawiania wartości parametrów w plikach W pliku musi znajdować się odwołanie do parametru w postaci ${nazwa_parametru} Pozwala na zmianę treści plików konfiguracyjnych czy też samych plików źródłowych aplikacji np: Konfiguracja połączenia do bazy danych Adres WebService w adnotacji Proces filtrowania musi zostać jawnie uaktywniony. SUPERPOM ma domyślne ustawienia jak poniżej: <resources> <resource>src/main/resources</resource> <filtering>true</filtering> </resources> UWAGA czasami nie wszystko powinno być filtrowane 36
<resources> <resource> Filtrowanie: przykład filtrowania źródeł <directory>src/main/java</directory> <filtering>true</filtering> <!-- domyślnie zasoby są kopiowane do target/classes --> <targetpath>../filtered-sources</targetpath> </resource> <resource> <! trzeba podać też katalog z normalnymi plikami zasobów, inaczej ich nie skopiuje--> <directory>src/main/resources</directory> </resource> </resources> 37
Artefaktu nie ma w domu Jeżeli masz np. bibliotekę w postaci jar, ale nie ma jej w jakimkolwiek repozytorium (wewnętrznym, zewnętrznym) Zainstaluj bibliotekę w lokalnym repozytorium mvn -cpu install:install-file -DgroupId=nazwa_grupy - DartifactId=nazwa_artefaktu -Dversion=numer_wersji - packaging=jar -Dfile=scieżka_do_pliku -cpu <=> --check_plugin_updates Zainstaluj bibliotekę w repozytorium maven Skonfiguruj w pom.xml lokalizację repozytorium maven (<distributionmanagement>) Skonfiguruj w settings.xml dostęp do repozytorium maven zamiast install:instal-file wpisz cel deploy:deploy-file podaj w poleceniu id repozytorium 38
Budowa dowlonego typu archiwum ASSEMBLY 39
TODO Biznesowe Aplikacje Rozproszone: Maven2 40 40
Konfiguracja maven-site-plugin. Informacje o projekcie i raporty GENEROWANIE STRONY PROJEKTOWEJ 41
Generowanie strony projektowej (Site) Sekcja <reporting >: konfiguracja raportów generowanych na potrzeby projektu <reporting> <plugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-project-info-reports-plugin</artifactid> <version>2.1.2</version> </plugin> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-javadoc-plugin</artifactid> <version>2.6</version> <configuration> <aggregate>true</aggregate> </configuration> </plugin> </plugins> </reporting> Więcej informacji, patrz http://maven.apache.org/plugins/maven-site-plugin/ UWAGA! Z oczywistych powodów, podane wersje wtyczek mogą nie być najnowsze 42
Generowanie strony projektowej (Site) W przypadku projektu wielomodułowego, strona będzie generowana z osobna dla każdego projektu. Raporty można zintegrować ustawiając wartość aggregate na true. Agregacja następuje dopiero po wykonaniu celu site:deploy Dla celu site:deploy należy skonfigurować distributionmanagement, tzn miejsce w którym zostanie umieszczona strona projektu. Może być to także lokalizacja na serwerze plików czy też www (transport np.: scp). <distributionmanagement> <site> <id>sjo</id> <url>file://d://javaprog//docs</url> </site> <distributionmanagement> 43
Konfiguracja serwerów: przykład Plik pom.xml <distributionmanagement> <site> <id>sjo</id> <name>sjo Site</name> <url>scp://nazwa_serwera/sciezka_do_np_public_html/</url> </site> </distributionmanagement> Plik settings.xml <servers> <server> <id>sjo</id> <username>uzytkownik</username> <password>haslo</password> <filepermissions>664</filepermissions> <directorypermissions>775</directorypermissions> <configuration></configuration> </server> </servers> 44
Informacje o projekcie: przykład Informacje brane są z plików pom.xml. <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-project-info-reports-plugin</artifactid> <version>2.1.2</version> <reportsets> <reportset> <reports> <report>index</report> <report>project-team</report> <report>dependencies</report> <report>dependency-convergence</report> <report>dependency-management</report> <report>plugin-management</report> <report>plugins</report> <report>summary</report> <report>scm</report> </reports> </reportset> </reportsets> </plugin> 45
Informacje o projekcie: project-team Listę członków zespołu projektowego bądź też organizacji należy umieścić w sekcji <developers>. Można też stworzyć dodatkową listę w sekcji <contributors> dla osób bądź jednostek przekazujących coś na rzecz projektu. Jeżeli generowane są raporty z scm (np. changelog) to id powinno być zgodne z loginem w tym systemie. <developers> <developer> <id>szsk</id> <name>szsk user</name> <email>test@gmail.com</email> <organization>technical University of Lodz</organization> <organizationurl>http://www.p.lodz.pl</organizationurl> <timezone>cet</timezone> <roles> <role>kierownik projektu</role> <role>pracownik</role> </roles> </developer> </developers> 46
Informacje o projekcie: summary Dane podstawowe o projekcie <name>zapisysjo</name> <description>opis projektu</description> <url>http://strona_domowa_projektu</url> Warto wpisać dane jednostki organizacyjnej. Informacja ta jest umieszczana dodatkowo w wielu raportach np.: javadoc <organization> <name>department of Computer Networks, Technical University of Lodz</name> <url>http://www.zsk.p.lodz.pl</url> </organization> 47
Informacje o projekcie: scm Wyświetlane są podstawowe informacje o systemie scm użytym w projekcie, oraz jak z niego korzystać. Wymaga podania stosownych url w sekcji scm: <scm> <connection>scm:svn:svn://adres_repozytorium</connection> <url>http://adres_www_repozytorium</url> </scm> Można też w tej sekcji ustalić developerconnection dla scm. Ten url wykorzystywany jest przy operacjach zapisu connection jest tylko dla operacji oczytu url jest wykorzystywany w wielu raportach do podlinkowania plików źródłowych (o ile w ogóle system scm udostępnia pliki np. po http) 48
Informacje o projekcie: scm Skonfigurowanie sekcji scm pozwala z poziomu Maven wykonywać operacje w systemie scm np. commit, update itd. Wiele innych wtyczek bazuje na scm Więcej informacji, patrz: http://maven.apache.org/scm/ http://maven.apache.org/scm/plugins/index.html Praca z repozytorium 49
Raporty na stronie projektowej W sekcji <reporting> można dodać wiele wtyczek generujących pożyteczne raporty. We wcześniej przedstawionym przykładzie znajdował się mavenjavadoc-plugin W większości z nich należy zwrócić uwagę na sposób kodowania źródeł i sposób kodowania generowanego raportu. Domyślnie przyjmowane jest ISO-8859-1 i java w wersji 1.4 Do ustalenia tych wartości warto zdefiniować w pliku pom parametry np. <source.enc> czy też <source.ver>, jak w przykładzie na kolejnym slajdzie. Parametry te powinny być także użyte np. w konfiguracji maven-compiler-plugin 50
Raporty na stronie projektowej: przykład <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-javadoc-plugin</artifactid> <version>2.6</version> <configuration> <encoding>${source.enc}</encoding> </configuration> </plugin> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-changelog-plugin</artifactid> <version>2.1</version> <configuration> <outpuencoding>${source.enc}</outpuencoding> <connectiontype>connection</connectiontype> </configuration> </plugin> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-jxr-plugin</artifactid> <version>2.1</version> <configuration> <linkjavadoc>true</linkjavadoc> <inputencoding>${source.enc}</inputencoding> <outputencoding>${source.enc}</outputencoding> </configuration> </plugin> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-pmd-plugin</artifactid> <version>2.4</version> <configuration> <linkxref>true</linkxref> <sourceencoding>${source.enc}</sourceencoding> <minimumtokens>100</minimumtokens> <targetjdk>${source.ver}</targetjdk> </configuration> </plugin> 51
Problemy przy generowaniu strony projektowej Z uwagi na złożoność generowania strony projektowej, może pojawić się wyjątek OutOfMemoryError. Należy wtedy zmienić ustawienia maszyny wirtualnej dla maven set MAVEN_OPTS=-Xmx1024m -Xms512m -XX:PermSize=256m -XX:MaxPermSize=512m mvn site 52
SCM Software Configuration Management PRACA Z REPOZYTORIUM 53
Konfiguracja klienta svn po ssh (Windows) Założenia Dostęp do repozytorium poprzez svn+ssh Uwierzytelnianie z wykorzystaniem klucza prywatnego Potrzebne są następujące programy klient subversion (np. Collabnet) putty (do konfiguracji ssh) plink (do utworzenia połączenia ssh) puttygen (gdy chcemy generować klucze) 54
Konfiguracja klienta svn po ssh (Windows) Wygodnie jest do PATH dodać ścieżkę do katalogu z zainstalowanymi programami putty, puttygen i plink (w tym przypadku nawet bardzo wskazane) oraz svn W profilu użytkownika w Application Data\Subversion (%APPDATA%\Subversion) znajduje się plik konfiguracyjny config. Ustawienia można także wprowadzić z poziomu rejestru patrz plik README Domyślnie svn poszukuje ssh do nawiązania połączenia svn+ssh. Zmieniamy to na plink.exe w sekcji [tunnels] [tunnels] ssh = plink.exe 55
Konfiguracja klienta svn po ssh (Windows) - problemy Zmiana nazwy plink na ssh nie jest najlepszym pomysłem. svn próbuje np. wywołać plink z opcją -q. Niestety plink tej opcji nie ma zaimplementowanej. 56
Konfiguracja połączenia svn po ssh (Windows) Uruchomić putty Skonfigurować sesję Session: hostname: uzytkownik@serwer connection type: SSH session name: nazwa_sesji Connection/SSH Wybrać wersję protokołu najlepiej v2 Connection/SSH/Auth Wskazać lokalizację pliku z kluczem prywatnym Zapisać sesję z poziomu Session 57
Test i konfiguracja maven Wykonać dowolne polecenie svn na repozytorium np.: svn ci svn+ssh://nazwa_sesji/lokalizacja_repo Konfiguracja maven: <scm> <connection>scm:svn:svn+ssh://nazwa_sesji/lokalizacja_repo</ connection> <developerconnection>scm:svn:svn+ssh://nazwa_sesji/lokalizac ja_repo</developerconnection> <url>http://nazwa_serwera_web_svn/lokalizacja_repo</url> </scm> Wykonać polecenie: mvn scm:checkin -Dmessage="test" Jeżeli wszystko przebiegło pomyślnie oznacza to, że maven został prawidłowo skonfigurowany do pracy z repozytorium 58
Wykorzystanie maven-release-plugin BUDOWA PLANOWANEGO WYDANIA APLIKACJI 59
Konfiguracja wtyczki maven-release-plugin Przez wydanie rozumiemy utworzenie planowanej finalnej wersji projektu Jeżeli skonfigurowano projekt zgodnie z wcześniejszymi slajdami to jest on praktycznie gotów do użycia tej wtyczki Wtyczka nie wymaga wtedy dodatkowej konfiguracji, aczkolwiek można to zrobić. Po szczegóły patrz: http://maven.apache.org/plugins/maven-release-plugin/ <plugin> <artifactid>maven-release-plugin</artifactid> <version>2.0-beta-9</version> </plugin> Biznesowe Aplikacje Rozproszone: Maven2 60 60
Cele wtyczki release:clean usunięcie informacji (dodatkowych plików) po wykonaniu release:prepare release:prepare przygotowanie wydania w SCM. release:rollback wycofanie zmian z ostatniego wydania release:perform wykonanie wydania z systemu SCM release:stage wykonanie wydania do innego repozytorium albo katalogu release:branch utworzenie rozgałęzienia aktualnego projektu z aktualizacją numerów wersji 61
Przygotowanie wydania, cel: prepare Sprawdzenie zgodności źródeł z repozytorium (<scm>) Zmiana numerów wersji w plikach pom.xml (część interaktywna, możliwy jest tryb wsadowy) Zmiana informacji w <scm> tak aby odpowiadała nowej lokalizacji wydania w repozytorium, np. w systemie svn katalog tags Wykonanie testów Zatwierdzenie zamian w repozytorium (tags) Podniesienie numerów wersji z jednoczesnym dodaniem SNAPSHOT Zatwierdzenie zmian w repozytorium dla wersji rozwojowej np. w systemie svn katalog trunk 62
Przygotowanie wydania: efekt działania Kolejne wersje finalne projektu Wersja rozwojowa ZapisySJO-0.0.5-SNAPSHOT 63
Inne przydatne cele projektowe Po wykonaniu celu prepare dobrze jest wykonać clean, celem usunięcia tymczasowych kopii plików pom.xml i informacji o przygotowanym ostatnim wydaniu W przypadku problemów z dokończeniem przygotowania wydania, gdy wykonane zostały zmiany w repozytorium można wycofać te zmiany przy pomocy celu rollback Można jednak po dokonaniu poprawek w konfiguracji kontynuować przygotowanie wydania przy pomocy celu prepare (takie jest domyślne ustawienie dla wtyczki, które oczywiście można zmienić) 64
Wydanie projektu, cel: perform Pobranie ostatniego wydania projektu Wykonanie celów: deploy umieszczenie artefaktów projektowych w repozytorium maven site-deploy umieszczenie strony projektowej na dedykowanym serwerze (patrz Generowanie strony projektowej) 65
ToDo Dodanie dependency do jar (plugin) Assembly Profile Biznesowe Aplikacje Rozproszone: Maven2 66 66