Prezentacja przygotowana na potrzeby...

Post on 10-Aug-2020

3 views 0 download

Transcript of Prezentacja przygotowana na potrzeby...

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Ł

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

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Ł

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