prezentacja przygotowana na potrzeby...
TRANSCRIPT
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
1
Prezentacja przygotowana na potrzeby przedmiotów:Sieciowe Systemy Baz DanychBiznesowe Aplikacje RozproszoneWielowarstwowe Aplikacje Sieciowe
MAVEN 2
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
2
WSTĘPPodstawowe informacje o konfiguracji środowiska i Maven
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
3
Literatura podstawowa
• Maven: The Definitive Guidehttp://www.sonatype.com/books/maven-book/reference/public-book.html
• Developing with Eclipse and Mavenhttp://www.sonatype.com/m2eclipse/documentation/download-
book?file=books/m2eclipse-book.pdf
• Opisy wtyczekhttp://maven.apache.org
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
4
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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
5
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)
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
6
Maven w Eclipse IDE
• Pobierz plik archiwum z Eclipse. Dla przykładowejinstalacji 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.5http://download.eclipse.org/tools/ajdt/35/update
• Zainstaluj Subclipse 1.6http://subclipse.tigris.org/update_1.6.x
• Zainstaluj GEF dla Eclipse 3.5http://download.eclipse.org/tools/gef/updates/releases/
• Zainstaluj m2eclipsehttp://m2eclipse.sonatype.org/update/
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
7
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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
8
Maven: cykle
• Trzy podstawowe cykle:
– clean
– default
– site
• 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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
9
Maven: fazy
• Przykładowe fazy:
– mvn compile
– mvn test-compile
• Do każdej fazy mogą być przywiązane cele wtyczek
CELcompiler:compile
FAZAcompile
CELinny:cel
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
10
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 maven-
compiler-plugin)
– mvn compiler:testCompile
CELCEL CEL
PLUGIN
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
11
Maven – domyślny cykl dla jar/war/ejb/ejb3/rar/par
process-resources
resources:resources
compile
compiler:compile
process-test-resources
resources:testResources
test:compile
compiler:testCompile
test
surefire:test
package
jar:jar
install
install:install
deploy
deploy:deploy
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
12
Modyfikacja cyklu, przypinanie celów do faz
• TODO
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
13
MAVEN – TWORZENIE PROJEKTUPodstawowe informacje o sposobie tworzenia projektów
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
14
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)
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
15
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ć.
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
16
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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
17
Docelowa struktura projektów
Projekt nadrzędny (POM)
Podprojekt (EAR)
Podprojekt EJB (JAR)
Podprojekt (WAR)
Podprojekt (JAR)
SUPERPOM
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
18
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-to-
the-pom.html
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
19
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>
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
20
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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
21
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)
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
22
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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
23
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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
24
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>
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
25
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 wformie spakowanej (jar i war)
• EAR może zawierać 0..1 moduł WEB (war), 0..N modułówEJB (jar) i 0..N innych bibliotek JAR
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
26
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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
27
Konfiguracja maven-ejb-plugin
• Ustawić wartość generateClient na true
• Wskazać w <clientIncludes> co ma zostać umieszczone wkliencie
<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>
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
28
Konfiguracja projektu WEB
• W projekcie aplikacji WEB należy dodać zależność względemwcześ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 plikukonfiguracyjnym nadrzędnego projektu maven (pom)
– parametru standardowego project.groupId
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
29
PARAMETRYParametryzacja projektów maven
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
30
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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
31
Parametry standardowe: project
• http://maven.apache.org/ref/2.2.0/maven-
model/maven.html
• Najczęściej wykorzystywane wartości project.*
– artifactId
– groupId
– version
– build.*
• directory
• sourceDirectory
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
32
Parametry standardowe: settings
• http://maven.apache.org/ref/2.2.0/maven-
settings/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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
33
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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
34
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.*
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
35
Parametry użytkownika
• Można definiować własne parametry
• Wykorzystywane podczas konfiguracji projektu i przyfiltrowaniu
• 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>
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
36
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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
37
Filtrowanie: przykład filtrowania źródeł
<resources>
<resource>
<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>
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
38
Artefaktu nie ma w „domu”
• Jeżeli masz np. bibliotekę w postaci jar, ale nie ma jej wjakimkolwiek repozytorium (wewnętrznym, zewnętrznym)
• Zainstaluj bibliotekę w lokalnym repozytoriummvn -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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
39
ASSEMBLYBudowa dowlonego typu archiwum
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
40
• TODO
Biznesowe Aplikacje Rozproszone: Maven2 40
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
41
GENEROWANIE STRONY PROJEKTOWEJKonfiguracja maven-site-plugin. Informacje o projekcie i raporty
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
42
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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
43
Generowanie strony projektowej (Site)
• W przypadku projektu wielomodułowego, strona będziegenerowana z osobna dla każdego projektu.
• Raporty można zintegrować ustawiając wartość aggregate natrue. Agregacja następuje dopiero po wykonaniu celusite:deploy
• Dla celu site:deploy należy skonfigurowaćdistributionManagement, tzn miejsce w którym zostanieumieszczona strona projektu. Może być to także lokalizacja naserwerze plików czy też www (transport np.: scp).
<distributionManagement>
<site>
<id>SJO</id>
<url>file://d://javaProg//docs</url>
</site>
<distributionManagement>
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
44
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>
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
45
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>
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
46
Informacje o projekcie: project-team
• Listę członków zespołu projektowego bądź też organizacji należyumieścić w sekcji <developers>.
• Można też stworzyć dodatkową listę w sekcji <contributors> dlaosób bądź jednostek przekazujących coś na rzecz projektu.
• Jeżeli generowane są raporty z scm (np. changelog) to id powinnobyć zgodne z loginem w tym systemie.
<developers>
<developer>
<id>szsk</id>
<name>SZSK user</name>
<email>[email protected]</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>
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
47
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>
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
48
Informacje o projekcie: scm
• Wyświetlane są podstawowe informacje o systemie scmużytym w projekcie, oraz jak z niego korzystać. Wymagapodania 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 dlascm. Ten url wykorzystywany jest przy operacjach zapisu
• connection jest tylko dla operacji oczytu
• url jest wykorzystywany w wielu raportach dopodlinkowania plików źródłowych (o ile w ogóle systemscm udostępnia pliki np. po http)
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
49
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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
50
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ę maven-
javadoc-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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
51
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>
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
52
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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
53
PRACA Z REPOZYTORIUMSCM – Software Configuration Management
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
54
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)
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
55
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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
56
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.
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
57
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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
58
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, żemaven został prawidłowo skonfigurowany do pracy zrepozytorium
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
59
BUDOWA PLANOWANEGO WYDANIA APLIKACJI
Wykorzystanie maven-release-plugin
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
60
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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
61
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
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
62
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 nowejlokalizacji wydania w repozytorium, np. w systemie svnkatalog tags
• Wykonanie testów
• Zatwierdzenie zamian w repozytorium (tags)
• Podniesienie numerów wersji z jednoczesnym dodaniemSNAPSHOT
• Zatwierdzenie zmian w repozytorium dla wersjirozwojowej np. w systemie svn katalog trunk
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
63
Przygotowanie wydania: efekt działania
Kolejne wersje finalne projektu
Wersja rozwojowa ZapisySJO-0.0.5-SNAPSHOT
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
64
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ć)
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
65
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)
Politechnika ŁódzkaZakład Sieci Komputerowych, Instytut Informatyki PŁ
66
ToDo
● Dodanie dependency do jar (plugin)
● Assembly
● Profile
Biznesowe Aplikacje Rozproszone: Maven2 66