Przygotowanie projektu w Maven2

Transkrypt

Przygotowanie projektu w Maven2
MAVEN 2
Prezentacja przygotowana na potrzeby przedmiotów:
Sieciowe Systemy Baz Danych
Biznesowe Aplikacje Rozproszone
Wielowarstwowe Aplikacje Sieciowe
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
1
Podstawowe informacje o konfiguracji środowiska i Maven
WSTĘP
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki 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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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)
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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/
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
7
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 Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
10
Maven – domyślny cykl dla jar/war/ejb/ejb3/rar/par
process-resources
test
resources:resources
compile
surefire:test
package
compiler:compile
process-test-resources
jar:jar
install
resources:testResources
test:compile
compiler:testCompile
install:install
deploy
deploy:deploy
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
11
Modyfikacja cyklu, przypinanie celów do faz
• TODO
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
12
Podstawowe informacje o sposobie tworzenia projektów
MAVEN – TWORZENIE PROJEKTU
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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)
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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ć.
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
16
Docelowa struktura projektów
SUPERPOM
Projekt nadrzędny
(POM)
Podprojekt (JAR)
Podprojekt (WAR)
Podprojekt EJB
(JAR)
Podprojekt (EAR)
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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>
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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)
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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>
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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>
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
28
Parametryzacja projektów maven
PARAMETRY
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
31
Parametry standardowe: settings
• http://maven.apache.org/ref/2.2.0/mavensettings/settings.html
• Generalnie bardzo rzadko wykorzystuje się
ustawieniach projektu wartości z settings.xml
• Najczęściej wykorzystywane wartości z settings.*
w
– 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 Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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.*
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
34
Parametry użytkownika
• Można definiować własne parametry
• Wykorzystywane podczas konfiguracji
filtrowaniu
• Przykład definicji:
projektu
i
przy
<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 Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
36
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 Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
38
Budowa dowlonego typu archiwum
ASSEMBLY
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
39
• TODO
Politechnika Łódzka
Zakład Sieci Komputerowych,
Instytut
Informatyki
Biznesowe
Aplikacje
Rozproszone:PŁ
Maven2
40
40
Konfiguracja maven-site-plugin. Informacje o projekcie i raporty
GENEROWANIE STRONY PROJEKTOWEJ
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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>
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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>
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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>
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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>[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 Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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>
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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)
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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>
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
52
SCM – Software Configuration Management
PRACA Z REPOZYTORIUM
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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)
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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.
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
58
Wykorzystanie maven-release-plugin
BUDOWA PLANOWANEGO WYDANIA
APLIKACJI
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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>
Politechnika Łódzka
Zakład Sieci Komputerowych,
Instytut
Informatyki
Biznesowe
Aplikacje
Rozproszone:PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
62
Przygotowanie wydania: efekt działania
Kolejne wersje finalne projektu
Wersja rozwojowa ZapisySJO-0.0.5-SNAPSHOT
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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ć)
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
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)
Politechnika Łódzka
Zakład Sieci Komputerowych, Instytut Informatyki PŁ
65
ToDo
●
Dodanie dependency do jar (plugin)
●
Assembly
●
Profile
Politechnika Łódzka
Zakład Sieci Komputerowych,
Instytut
Informatyki
Biznesowe
Aplikacje
Rozproszone:PŁ
Maven2
66
66