Projektek menedzselése Apache Maven segítségével



Hasonló dokumentumok
LOGO-VIR Teszt terv. Pécs Megyei Jogú Város Önkormányzata Kontrolling (vezetői információs) rendszer teszt terve

Automatizált Java Build. ApacheAnt használatával

LOGO-VIR Oktatási terv. Pécs Megyei Jogú Város Önkormányzata Kontrolling (vezetői információs) rendszer oktatási terve

Számítógépes információs rendszerek az iskolában és a gazdaságban Ismerjen számítógépes katalógusokat és adatbázisokat.

10XONE Szoftver és szolgáltatási szerződés Általános Szerződési Feltételek (ÁSzF) XONE V3.3 SZERZŐDÉS

ÚTMUTATÓ A PROJEKTMENEDZSMENT TÁMOGATÓ RENDSZER

Mérnöknek lenni annyit jelent: előre látni, hogy egy megvalósítandó rendszer/termék hogyan működik, viselkedik majd a hétköznapokban.

Felhasználói leírás a DimNAV Server segédprogramhoz ( )

Binarit.KPKNY. Áttekintés. BINARIT Informatikai Kft Budapest, Váci út 95.

KÜRT Zrt. Kockázatelemzés riport

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Programozási technológia 2.

Gyakorlati vizsgatevékenység B

Novell Kisvállalati Csomag 6.5

cato II. rész: Protokollok és Terápiatervek

A fogyasztói tudatosság növelése. az elektronikus hírközlési piacon

5CG. számú előterjesztés

WorldSkills 2011 Hálózati informatikai rendszergazda

ZÁRÓ VEZETŐI JELENTÉS TEVÉKENYSÉGELEMZÉS ÉS MUNKAKÖRI LEÍRÁSOK KÉSZÍTÉSE SZÁMÍTÓGÉPES ADAT- BÁZIS TÁMOGATÁSÁVAL

WEBSHOP FELHASZNÁLÓI KÉZIKÖNYV

Lekérdező HypEx bankterminál

E-közigazgatási költség-hatékonysági módszertanok és benchmarking/monitoring rendszer kidolgozása

VerdA GaraS gépjármű költségnyilvántartó

MEGBÍZÁS TÍPUSOK LIMITÁRAS MEGBÍZÁS (LIMIT VAGY LIMIT ORDER)

ReComp Informatika Zrt Budapest, Íves út 8. Tel.: +36 (1) ; Fax: +36 (1) H Í R L E V É L

Verzió CompLex Officium Felhasználói kézikönyv

Vízgyűjtő-gazdálkodási Terv A Duna-vízgyűjtő magyarországi része háttéranyag: Felszíni víztestek kijelölésének felülvizsgálata

A Zotero hivatkozáskezelő program bemutatása. Mátyás Melinda

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

Lekérdező HypEx bankterminál

A webprogramozás alapjai. Óbudai Egyetem Neumann János Informatikai Kar 2018/19/1 szemeszter

Turisztikai attrakciók és szolgáltatások fejlesztése c. konstrukciójához. Kódszám: DDOP-2.1.1/D-12, KDOP-2.1.1/D-12, NYDOP-2.1.1/F-12 DAOP-2.1.

Tájékoztató. Használható segédeszköz: -

A játékot készítette Orosz Ákos és Róth Gergő Esetleges kérdésekkel hozzájuk lehet fordulni.

Adatbenyújtási kézikönyv

Klinng! Mobil Pincér felhasználói (pincér) tájékoztató

A HÁLÓ KÖZÖSSÉG MISSZIÓJA A KÁRPÁT-MEDENCÉBEN

3. prioritás: A minıségi oktatás és hozzáférés biztosítása mindenkinek

Csapata erősítésére keres gyakornokot a Kultúra.hu. Jelentkezni fényképes önéletrajzzal a takacs.erzsbet@kortarsmedia.hu címre várjuk.

Tájékoztató ÖFR Verzióváltásról

BaBér bérügyviteli rendszer telepítési segédlete év

MIKROPROCESSZOROS KAZÁN KF + HMV HŐMÉRSÉKLET SZABÁLYOZÓ

VirtualLibrary-1.0 Fontos tudnivalók

NAV felé történő számla adatszolgáltatás a Nagy Utazás 3 programmal

BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM REKTORI HIVATAL OKTATÁSI IGAZGATÓSÁG. Tanulmányi ügyrend 1. FÜZET A FELVÉTELI ELJÁRÁS

1 of :54

Pályázati felhívás az EGT Finanszírozási Mechanizmus es időszakában a Megújuló Energia

A felülvizsgálatok során feltárt hibákat a döntések tartalmához igazodó sorrendben csoportosítottuk.

A Java EE 5 plattform

Útmutató az OKM 2007 FIT-jelentés telepítéséhez

Foglalkoztatás és a foglalkoztatási formák kérdőiv 2014

Prototípus, termék-, technológia- és szolgáltatásfejlesztés

Android alapok. Android játékfejlesztés

Hello Maven. JSE vs. JEE, JEE vs Spring. Óbudai Egyetem, Java Enterprise Edition Műszaki Informatika szak Labor 2. Bedők Dávid v0.

L E V E G Ő M U N K A C S O P O R T

A csatlakozás érdekében a Csatlakozó adatkezelőnek az alábbi folyamat szerint kell informatikai rendszerének csatlakozását megvalósítani:

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

Foundation Level. Hivatalos magyar nyelvű tanterv. Alapszintű képesítés

A PUBLIC RELATIONS TEVÉKENYSÉG ESZKÖZEI

Építésügyi Fizetési Portál (EKOP-2.A ) Képzés 2.

Távolléti díj kezelése a Novitax programban

Normatív Határozat. Felelős: dr. Kelemen Márk polgármester Határidő: azonnal

E-Freight beállítási segédlet

Javaslat AZ EURÓPAI PARLAMENT ÉS A TANÁCS HATÁROZATA

Üzemeltetési dokumentáció. Naviscon Informatikai Zrt Budapest, Montevideó utca 16/b.

Regionális forduló november 27. A oszt{lyosok feladata. Bemeneti adatok DUSZA ÁRPÁD ORSZÁGOS PROGRAMOZÓI EMLÉKVERSENY 2010/2011

Dolphin Kft. Dolphin InvoicePro. Funkciók. verziószám:

INTEGRÁLT NYOMONKÖVETŐ RENDSZER

Gyakorlati vizsgatevékenység A

Pécs Megyei Jogú Város Önkormányzata Kontrolling (vezetői információs) rendszer koncepciója

INFORMATIKAI STRATÉGIA

DCWatch fejlesztői HUB: dchub://4242.hu:1411 Elite Hub, ahol megnézheted működés közben a BOT-ot: dchub://elite.4242.hu:4242

2.sz melléklet - Szolgáltatási szint megállapodás

VBexpress 9.0 verzió új képességei

A SZŐKE TISZA pusztulása és a jogi felelősség kérdése

KTI TUDÁSTÁR FELHASZNÁLÓI KÉZIKÖNYV. Régens Zrt.

1. számú Melléklet AZ ÖNKORMÁNYZATI ASP KÖZPONTOK KIALAKÍTÁSÁVAL KAPCSOLATOS KÖVETELMÉNYEK

A kompetens intézmények logói. ECVET ASSET Autóipari Szolgáltatási Szektor ECVET Tesztelés Hivatkozási szám /

Java Parancssor Maven-nel

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

VESZPRÉM MEGYEI ÖNKORMÁNYZAT KÖZGYŰLÉSE HATÁROZAT

LUDA SZILVIA. sikerül egységnyi anyagból nagyobb értéket létrehozni, gyorsabban nő a GDP, mint az anyagfelhasználás.

JAVA webes alkalmazások

PÁLYÁZATI ÖSSZEFOGLALÓ. GINOP Mikro-, kis- és középvállalkozások termelési kapacitásainak bővítése

MINŐSÉGIRÁNYÍTÁSI KÉZIKÖNYV

Apache OpenOffice telepítési útmutató

RapidMiner telepítés i. RapidMiner telepítés

Alkalmazások fejlesztése A D O K U M E N T Á C I Ó F E L É P Í T É S E

1. Az ajánlatkérő neve, címe, telefon- és telefaxszáma; elektronikus levelezési címe

PTE-PROXY VPN használata, könyvtári adatbázisok elérhetősége távolról

MATEMATIKA C 12. évfolyam 3. modul A mi terünk

Ügyviteli rendszerek hatékony fejlesztése Magic xpa-val mobilos funkciókkal kiegészítve (kezdő) Szoftver telepítési útmutató

IV. rész. Az élettársi kapcsolat

Windows7 felhasználóknak

KIR-STAT internetes adatgyűjtő rendszer

Oralce kliens installálása Windows Server 2003-ra

MIRE KELL ÜGYELNI A SZAKDOLGOZAT ÖSSZEÁLLÍTÁSAKOR (Ismertető Bodó Barna)

Az Elektronikus levéltár projekt keretében a hosszú távú levéltári megőrzéshez szükséges szabályozási feltételek kidolgozása

Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt

HASZNÁLATI ÚTMUTATÓ. A ProCoord típusú Precíziós Lézer Targethez

Átírás:

1 TARTALOMJEGYZÉK 1 Tartalmjegyzék... 2 2 Bevezetés... 2 3 Leírás... 2 3.1 Alapfgalmak... 2 3.2 Maven beállítása... 4 3.3 Repsitry... 5 3.4 Maven prjektek felépítése és generálása... 5 3.4.1 Új Maven prjekt generálása... 5 3.5 Pm.xml fntsabb részei... 6 3.6 Néhány maven plugin... 8 4.6.1 clean... 8 3.6.2 cmpiler... 8 3.6.3 deply... 8 3.6.4 install... 8 3.6.5 verifier... 9 3.6.6 ear... 9 3.6.7 jar... 9 3.6.8 site... 9 3.6.9 checkstyle... 9 3.6.10 release... 10 3.6.11 carg... 10 3.7 Néhány példa Maven-ben... 10 3.7.1 Eclipse prjekt készítés mavennel... 10 3.7.2 Webes prjekt készítése és telepítése Tmcat-be... 11 3.7.3 Unit tesztek futtatása és riprtzása... 12 3.7.4 Flex prjekt frdítása maven-ant pluginnal... 13 4 Összegzés... 15 5 Irdalmjegyzék... 15 2 BEVEZETÉS A Maven egy az The Apache Sftware Fundatin által flyamatsan fejlesztett eszközök közül, amely a szftverfejlesztési életciklus néhány pntján nyújt segítséget. Egy frdítási feladatkat ellátó eszköznek indult, de az igények növekedésével a funkcinalitása skat bővült, de fő feladata talán, a fejlesztők által elkészített frráskódból, megfelelő knfiguráció alapján a prgram frdítása, tesztelése. A tanulmány a maven alapjait illetve néhány plugin-t hivattt bemutatni. 3 LEÍRÁS 3.1 Alapfgalmak pm.xml: Prject Object Mdel. A prjekt knfigurációját itt lehet megadni, a beállításkat xml struktúrában kell megadni. 34_Maven intr 2/15

prject: Alapegység. Az elemei a mdulk. A prjekt könyvtárban lévő pm.xml-ben mndhatjuk meg, mik a mdulk és definiálhatunk ezek között egy frdítási srrendet. archtype: Maven prjekt template. Segítségével legenerálhatunk maven prjektet, illetve saját magunk is készíthetünk templatet prjekt definiálására. artifact: Egy már meglévő prjekt vagy mdul lefrdíttt váltzata, amelynek van egy aznsítója artifactid és egy grupid-ja, illetve verziószáma. A buildelési flyamat végén is artifact áll elő, repsitrykból érhetők el. Pl.: Az apache struts2-cre artifactját, M2_REPO/rg/apache/struts/struts2-cre alatt lehet elérni, ahl a struts2-cre az arctifactid. Ezen belül lesznek a verziószámztt mappák, és azn belül a knkrét verziók. <artifactid>struts2-cre</artifactid> mdule: Nagybb prjektek esetén,amikr több részre lehet taglni funkció vagy valamilyen szempnt alapján a prjektet akkr a részeket mdulknak nevezi a maven. Ha ezeknek a részeknek a frdítása vagy telepítése összefügg, akkr mdulként fel lehet venni őket egy pm.xml-be és közöttük srrendet lehet megállapítani. A mdulk pm.xml-jei egymás után lesznek feldlgzva. <mdules> <mdule>business</mdule> <mdule>web</mdule> <mdules> dependency: Függőség, amit a pm.xml-ben be lehet állítani, hgy egy prjektnek vagy mdulnak mire van szüksége a frdítás, futtatás vagy egyéb scpe estén. A struts2-cre dependency a pm.xml-ben: <dependency> <grupid>rg.apache.struts</grupid> <artifactid>struts2-cre</artifactid> <versin>2.2.1</versin> </dependency> scpe: A dependencyhez kapcslódó fgalm. Itt lehet megadni, hgy a függőségként felvett artifactra mikr lesz szükség. cmpile: Ez az alapértelmezett, ilyenkr nem kell megadni semmilyen scpe-t a pm.xml-ben. A függő prjektek is látni fgják. Egy webes prjektnél a lib-ek közé autmatikusan bemáslódik, és belecsmaglódik a war-ba. A buildelési életciklus összes pntján szerepel a classpathn a függőség. prvided: Azk a függőségek, amik kellenek futási és frdítási időben is, de a futtató környezetben rendelkezésre állnak, azkat nem kell például egy webes prjekt libjei közé berakni. Ilyen például a ServletApi, ami egy webes knténerben vagy alkalmazás szerverben szerepel, de frdításkr is szükség van rá. Csak a frdítási és a tesztelési classpathkn szerepel a függőség. 34_Maven intr 3/15

runtime: Az a függőség, ami nem szükséges frdítás srán, de futás közben igen. Ilyenkr a függőség csak a test classpathn szerepel. test: Az alkalmazás futásáhz nem szükséges a függőség, de a tesztesetek futtatásáhz igen. system: Hasnló a prvidedhz, de ezt nem kell a repsitryban keresni, a rendszerben mindig megtalálható. PL.: <dependency> <grupid>cm.sun</grupid> <artifactid>tls</artifactid> <versin>1.4.2</versin> <scpe>system</scpe> <systempath>${java.hme}/../lib/tls.jar</systempath> </dependency> imprt: maven 2.0.9-től lehet megadni. Csak apm típusú függőségekre lehet megadni a <dependencymanagement>részben. Egy másik prjektben definiált függőségeket lehet vele felhasználni. repsitry: Artifactk gyűjteménye. Létezik saját gépen lkális repsitry illetve meg lehet adni különbő publikus repsitrykat is. plugin: A maven pluginkból áll, amiket a pm.xml-ből tudunk knfigurálni. A maven-ben sk alapból definiált plugin létezik, de sajátkat is lehet írni. Pl.:maven-cmpiler-plugin amiben meg van adva milyen verzió a frrás és milyen legyen a lefrdíttt. <plugin> </plugin> <artifactid>maven-cmpiler-plugin</artifactid> <cnfiguratin> <surce>1.5</surce> <target>1.5</target> </cnfiguratin> gal: Egy plugin által elvégzendő funkciót adunk meg a gal-lal. Pl.:maven-cmpilerplugincmpilegal-ja: <gal>cmpile</gal> phase: A buildelési flyamat részekből áll pl: validálás, frdítás, tesztelés. így meg lehetadni, hgy a definált feladat mikr fussn le. http://maven.apache.rg/guides/intrductin/intrductin-t-the-lifecycle.html 3.2 Maven beállítása Maven használata és beállítása előtt fel kell rakni egy JDK-t, és be kell állítani a JAVA_HOME környezeti váltzót. Ezután be kell állítani az M2_HOME-t ami maga a maven telepítési helye a maven mappával együtt, majd fel kell venni a PATH környezeti váltzóba a M2_HOME/bin könyvtárat. Ha frdításk srán valamilyen glbális beállítást kellenealkalmazni, akkr ezt a 34_Maven intr 4/15

MAVEN_OPTS környezeti váltzóba kell beállítani. A repsitry beállításkat 3 helyen lehet váltztatni: M2_HOME/cnf/settings.xml, a USER_HOME/.m2/settings.xml, illetve be lehet állítani külső repsitrykat a pm.xml-ben is. Ezekben lehet megadni a repsitry helyét, és ha a lkális repsitryban nem található a szükséges artifact, akkr azt hl keresse. 3.3 Repsitry A repsitry, mint már írtam,artifactk gyűjteménye. Lkálisan a gépen megtalálható a USER_HOME/.m2/repsitry alatt(alapbeállításként). A settings.xml-ben definiáltak alapján, ha lkálisan nem létezik egy artifact, akkr az le is fg ide töltődni. A frdítást lehet ffline módban futtatni, ilyenkr csak a lkális repsitryban tárlt artfactk lesznek használva. Ezt a kapcslóval lehet beállítani. Repsitry szerverek működtetésére és menedzselésére is léteznek eszközök pl.: Archiva, Nexus, Artifactry 3.4 Maven prjektek felépítése és generálása Egy Java-s prjekt számára nemlétezett előre definiált prjekt felépítés, valamilyen szabvány ami megmndaná egy prjekt hgy is nézzen ki, így a különböző prjektekhez különböző scripteket kellett létrehzni, hgy a frdítás sikeres lehessen. A Maven felkínál egy lehetőséget, mappa struktúrát, amely mentén autmatikusan tud működni, persze van lehetőség eltérni tőle. src/main/java Applicatin/Library surces src/main/resurces Applicatin/Library resurces src/main/filters Resurce filter files src/main/assembly Assembly descriptrs src/main/cnfig Cnfiguratin files src/main/webapp Web applicatin surces src/test/java Test surces src/test/resurces Test resurces src/test/filters Test resurce filter files src/site Site LICENSE.txt Prject's license NOTICE.txt Ntices and attributins required by libraries that the prject depends n README.txt Prject's readme target The target directry is used t huse all utput f the build. 3.4.1 Új Maven prjekt generálása A maven lehetőséget kínál az általa definiált prjektstruktúra generálására, léteznek előre definiált archetypk pl.: Archetype ArtifactIds Descriptin 34_Maven intr 5/15

An archetype which cntains a sample archetype. An archetype which cntains a simplifed sample J2EE applicatin. maven-archetype-mj An archetype which cntains a sample a sample Maven plugin. maven-archetype-site maven-archetypearchetype maven-archetypej2ee-simple maven-archetypeplugin maven-archetypeplugin-site maven-archetypeprtlet maven-archetypequickstart maven-archetypesimple maven-archetype-sitesimple maven-archetypewebapp An archetype which cntains a sample Maven plugin. An archetype which cntains a sample Maven plugin site. An archetype which cntains a sample JSR-268 Prtlet. An archetype which cntains a sample Maven prject. An archetype which cntains a simple Maven prject. An archetype which cntains a sample Maven site which demnstrates sme f the supprted dcument types like APT, XDc, and FML and demnstrates hw t i18n yur site. An archetype which cntains a sample Maven site. An archetype which cntains a sample Maven Webapp prject. Egyszerű prjektgeneráláshz parancssrban be kell gépelni: mvnarchetype:generate. Ezután a kiírt listából ki kell választani a generálandó prjekttípust, utána a típusnak megfelelő beállításkat és elkészül a prjekt. Egy maven-archetype-webapp esetén létrejön egy pm.xml, src/main/ mappaszerkezet benne a resurces és webapp mappával, amiben már benne van a WEB-INF egy web.xml-el. 3.5 Pm.xml fntsabb részei grupid: <grupid>..</grupid>. Meg kell adni egy egyedi aznsítót, amely vnatkzhat a készítőre vagy a prjektre. Az egyediség azért fnts, mert rengeteg artifact gyártó létezik és ha már egy meglévő csprt neve kerül megadásra, akkr abból kavardásk lehetnek, ha fel lesz töltve egy külső repsitryba. artifactid : <artifactid>..</artifactid>. Maga a prjekt aznsítója. A grupidval egyedi prjektet kell, hgy aznsítsanak. versin: <versin>..</versin>. A prjekt verziószáma. Ha éppen fejlesztés alatt lévő verzióról van szó, akkr szkás SNAPSHOT-ként megjelölni. Ha repsitryba lesz deplylás, akkr a SNAPSHOT kicserélődik UTC frmátumbeli dátumra. A pm.xml-ben lehet tvábbra is SNAPSHOT-ként hivatkzni és ilyenkr a legújabb dátummal rendelkezőt fgja használni az adtt verzióból. build: <build>..</build>.a prjekten végrehajtandó feladatkat két helyen lehet megadni a pmban. Vagy <prject></prject> ben megadtt build tagekben, vagy a prject tagekben definiálhatunk prfile-kat és azkban. defaultgal:<defaultgal>..</defaultgal>. A prjekt könyvtárában kiadtt mvn parancs után az itt definiált életciklusbeli pnt elérése a cél. 34_Maven intr 6/15

directry: <directry>..</directry>. Azt állítja be, hgy abuildelés flyamán előállíttt eredmények hva kerüljenek. A maven alapértelmezetten a ${basedir}/target et használja. resurces: <resurces>..</resurces>. Itt kell megadni azkat a knfigurációs fájlkat, leírókat, amelyek nem a mavennek alapértelmezettként megadtt resurces mappában vannak. prfile:<prfile>..</prfile>előfrdul hgy a prjektet különböző rendszerekben vagy különböző rendszereken kell buildelni. Ilyenkr érdemes prfile-kat létrehzni, amelyben meg lehet adni az adtt rendszer sajátsságait, és ha a prfile nevével paraméterezzük a futtatást, akkr csak a megfelelő prfileban leírtak fgnak történni (mvn P prfile_name). parent: <parent>..</parent>. A prjektek, mdulk közötti öröklődés, aggregáció eszköze. A következő elemek lesznek összevnva: Megadása: függőségek közreműködők és fejlesztők leírása plugink a beállításaikkal resurces <parent> <grupid>..</grupid> <artifactid>..</artifactid> <versin>..</versin> </parent> Abban az esetben, ha a parent nem közvetlenül 1 szinttel feljebb van a mappaszerkezetben, akkr meg kell adni a helyét: <relativepath>.../parent/pm.xml</relativepath> dependencymanagement: <dependencymanagement>..</dependencymanagement>. A prjektek közötti függőségek esetén, ha több prjekt is ugyanazt a függőséget használja, érdemes a dependencymanagment részben felvenni a függőségeket a megfelelő verziószámkkal és beállításkkal. Azk a prjektek amik öröklik ezeket a tulajdnságkat, azkban már elég lesz csak a plugin artifactid-ját és grupid-ját megadni(meg a típust ha nem jar típusról van szó). http://maven.apache.rg/guides/intrductin/intrductin-t-dependency-mechanism.html pluginmanagement: <pluginmanagement>..</pluginmanagement>. Hasnlóan a dependencymanagement-hez ezt is a prjektek közötti függőségek kezelésének megkönnyítésére lehet használni. Ebben a részben pluginkat és azk knfigurációját kell 34_Maven intr 7/15

megadni, majd a gyerek pm.xml-ekben ezekre autmatikusan történik a hivatkzás, a plugin grupid és artifactid-jával. A knfigurációt felül lehet definiálni a gyerek pm.xmlekben, egyszerűen csak meg kell adni az új infrmációkat és azk máris felülírták az eddigi beállításkat az adtt gyerek pm.xml-ben. 3.6 Néhány maven plugin 3.6.1 clean Eltávlítja a buildelés srán keletkező fájlkat. Egy gal van, a clean. A cleannek saját életciklusa van: pre-clean->clean->pst-clean. Ezt a plugint nem kell megadni a pm.xml-ben ahhz, hgy használni lehessen, csak akkr, ha szeretnénk beépíteni a buildelési életciklusba. Használata: mvn clean vagy mvn clean:clean <artifactid>maven-clean-plugin</artifactid> 3.6.2 cmpiler A frrásállmányk frdítására lehet használni. Alapértelmezetten a java frdítóját használja(javac). Két gal van: cmpile, ami a prgram frráskódt frdítja a cmpile fázisban, a másik a testcmpile, ami a teszt kódkat frdítja le testcmpile fázisban. A java-s frdítót is innen lehet paraméterezni. <artifactid>maven-cmpiler-plugin</artifactid> 3.6.3 deply Ha nem elég csak a saját repsitrynkba berakni a prjekt buildelése srán elkészült artifactkat, akkr a deply pluginnal egy külső,távli repsitryba fel lehet rakni azkat. Ha a buildelési életciklusba kell ezt a funkciót beépíteni, akkr a deplyplugindeplygalját kell használni, ha nem ebben az életciklusban, akkr a deply-file galt, ahl meg kell adni, hgy mi az amit fel kell tölteni a külső repsitrykba. <artifactid>maven-deply-plugin</artifactid> 3.6.4 install Az install plugin az install fázisban felrakja a lcal repsitryba az arctifactt. A pmban knfigurációt nem kell külön megadni, egyszerűen mvninstall al működni fg. Lehetőség van nem a build srán előálló artifact felrakására is, ilyenkr ainstall-filegalt kell használni, ahl meglehet mndani mi kerüljön be a lcal repsitryba. 34_Maven intr 8/15

<artifactid>maven-install-plugin</artifactid> 3.6.5 verifier Integrációs teszteléshez nyújt segítséget. Egy gal van, a verify. Használatáhz egy xml-t kell definiálni, amiben a szükséges ellenőrzések vannak leírva. A plugin a buildelési életciklus verify fázisában fut le. <artifactid>maven-verifier-plugin</artifactid> 3.6.6 ear Az ear plugin segítségével ear fájlkat lehet generálni, ki tudja generálni a telepítési leírást is. <artifactid>maven-ear-plugin</artifactid> 3.6.7 jar Elkészíti a megadtt frrásfájlkból és resurcekból a jar fájlt, ha jar gallal van definiálva, ha test-jarral, akkr a tesztfrráskból készül a jar. <artifactid>maven-jar-plugin</artifactid> 3.6.8 site A prjektről készít riprtt. Képes az elkészült riprtt webes knténerbe telepítve futtatni, illetve a megadtt helyre máslva publikálni. A site pluginnek saját életciklusa van: pre-site site pst-site site-deply executes prcesses needed prir t the actual prject site generatin generates the prject's site dcumentatin executes prcesses needed t finalize the site generatin, and t prepare fr site deplyment deplys the generated site dcumentatin t the specified web server <artifactid>maven-site-plugin</artifactid> 3.6.9 checkstyle A frráskódk készítésekr nem elegendő az, hgy az elkészült kód frduljn, a megfelelő knvenciókat be kell tartani. Ezek ellenőrzésére létrehztt checkstyle knfigurációk betartását lehet ellenőrizni és riprtzni a prjekten. <plugin> <artifactid>maven-checkstyle-plugin</artifactid> <versin>2.6</versin> </plugin> 34_Maven intr 9/15

A pluginban az alábbi előredefiniált knfigurációk vannak: sun_checks.xml, turbine_checks.xml, avaln_checks.xml, maven_checks.xml. Saját knfiguráció megása: <cnfiguratin> <cnfiglcatin>checkstyle.xml</cnfiglcatin> </cnfiguratin> 3.6.10 release A plugin a verzióváltástsegíti egy prjekten. Verziókezelő használata is be van építve, így autmatikusan tud tag-et készíteni egy adtt release kiadáskr, ezen felül elvégzi a pm.xml-ben a verzióváltáskat, figyel pl.: van e Snapsht verzióra hivatkzás. <artifactid>maven-release-plugin</artifactid> 3.6.11 carg Webes knténerek és alkalmazásszerverek manipulálására alkalmas eszköz, mely nem csak mavennel használható, hanem ant illetve javaból is közvetlenül. Célja hgy a buildelés srán már be is lehessen deplylni az alkalmazást, a szervert le lehessen állítani, elindítani. Támgatja többek között a Weblgic, Tmcat, Jbss több verzióját. http://carg.cdehaus.rg/ <grupid>rg.cdehaus.carg</grupid> <artifactid>carg-maven2-plugin</artifactid> 3.7 Néhány példa Maven-ben 3.7.1 Eclipse prjekt készítés mavennel A prjektek fejlesztése közben felhasznált függőségek kezelését két helyen kell flyamatsan szerkeszteni. Egyik a mavenpm.xml, illetve a kódíráshz, alábbi példában Eclipse, használt fejlesztői eszközben. Ez körülményes, illetve kihagyásk, verziószám eltéréseket kzhat. Ennek kezelésében nyújt segítséget a maven eclipse-es pluginje. Fnts hgy a maven egy előre meghatárztt váltzóhz fgja megadni a függőségeket. Ez a váltzó M2_REPO ami a lcal repsitryra kell hgy mutassn. Ezért első lépés ezt az eclipsewrkspace-ben beállítani. Ezután a wrkspace-ben ki kell adni a következő parancst: mvn archetype:create -DgrupId=hu.neurn -DartifactId=maven-eclipse-test Ezzel létrejött egy egyszerű javas prjekta buildeléshez szükséges pm.xml-el együtt. Ahhz hgy ezt be is lehessen imprtálni eclipse-be, szükség lesz a.prject és a.classpath fájlkra. Ezek legeneráláshz a 34_Maven intr 10/15

mvn eclipse:eclipse parancst kell lefuttatni a pm.xml könyvtárában. A pm.xmlben megfigyelhető, hgy a junit, vagyis a teszteléshez szükséges framewrk jar fájlja már dependencyként szerepel, és a legenerált classpath fájlban is benne van: <classpathentry kind="var" path="m2_repo/junit/junit/3.8.1/junit-3.8.1.jar"/> Látszik hgy az eclipsben használt váltzón keresztül van a hivatkzás a függőségre. Ez azért jó,mert ha csapat dlgzik a prjekten és valamilyen verziókezelő rendszert használnak, vagy csak egymás között megsztják a frrást és a prjektet, akkr ha valaki új függőséget vezet be a prjektbe, akkr ennek beállításával a többieknek nem kell fglalkzni csak használni a módsíttt classpatht, mert a váltzó elrejti a tényleges gépfüggő elérési utat. Ha egy új függőséget kell bevezetni a prjektbe, akkr nem kell mást tenni, mint kiegészíteni a pm.xml-t és lefuttatni újra a mvn eclipse:eclipse parancst. Pl.: be kellene rakni egy lg4j függőséget. Ha nem tudjuk, milyen grupid val és milyen artifactid-val kell rá hivatkzni, akkr érdemes egy maven repsitryban keresni. http://mvnrepsitry.cm. Lg4j-re keresve előjönnek a lehetőségek. Ez egy külső repsitry, itt megtalálhatjuk a szükséges artifactt. Kiválasztva az Apache Lg4j-t a megfelelő verziószámmal, tt van a pm.xml-beli hivatkzási frma. <dependency> <grupid>lg4j</grupid> <artifactid>lg4j</artifactid> <versin>1.2.16</versin> </dependency> Ezután lefuttatva az eclipse plugint megváltztt a classpath fájl, és mst már szerepel benne a lg4j-re a hivatkzás. A prjekt könyvtárában egy mvn install parancsra elkészül a jar fájlt a target könyvtárban. 3.7.2 Webes prjekt készítése és telepítése Tmcat-be Webes prjekt készítéséhez vagy a már Új prjekt részben leírtak mentén kell eljárni, vagy egyszerűen csak a következő paranccsal is lehet dlgzni: mvn archetype:create -DgrupId=hu.neurn.testapp -DartifactId=new-webapp - DarchetypeArtifactId=maven-archetype-webapp Létrejön egy egyszerű webes prjekt. A prjekt könyvtárába belépve, az mvn install parancsra, a maven által definiált target könytárba létre is jön a war állmány. Érdemes megfigyelni, hgy míg az előző prjekt pm.xml-jében a <packaging>jar</packaging> vlt, itt már <packaging>war</packaging>. Ebből fgja tudni a maven, hgy mit kell úgymnd előállítani, ez milyen prjekt. El kell készíteni a deplyláshz szükséges beállításkat. pm.xml a beállítás után: <prject xmlns="http://maven.apache.rg/pom/4.0.0" xmlns:xsi="http://www.w3.rg/2001/xmlschemainstance" xsi:schemalcatin="http://maven.apache.rg/pom/4.0.0 http://maven.apache.rg/maven-v4_0_0.xsd"> 34_Maven intr 11/15

<mdelversin>4.0.0</mdelversin> <grupid>hu.neurn.testapp</grupid> <artifactid>new-webapp</artifactid> <packaging>war</packaging> <versin>1.0-snapshot</versin> <name>new-webapp Maven Webapp</name> <url>http://maven.apache.rg</url> <dependencies> <dependency> <grupid>junit</grupid> <artifactid>junit</artifactid> <versin>3.8.1</versin> <scpe>test</scpe> </dependency> </dependencies> <build> <finalname>new-webapp</finalname> <plugins> <plugin> <grupid>rg.cdehaus.mj</grupid> <artifactid>tmcat-maven-plugin</artifactid> <cnfiguratin> <url>http://lcalhst:8080/manager</url> <server>mytmcat</server> <path>/new-webapp</path> </cnfiguratin> </plugin> </plugins> </build> </prject> Fnts hgy a repsitryban be kell állítani a tmcathez az authentikációt: <server> <id>mytmcat</id> <username>test</username> <passwrd>test</passwrd> </server> Ezek után, ha a war elkészült, mvn install utasításra, akkr ki lehet adni a mvn tmcat:deply parancst, és máris be van deplylva. Tipp: ha nem működik a plugin és 401-es hibát látunk a knzlban, akkr érdemes a címet ellenőrizni. (lcalhst helyett lehet,hgy gépnév kell) 3.7.3 Unit tesztek futtatása és riprtzása A maven előre definiálja a tesztsztályk helyét a prjektben:src/test. Ha ide lettek létrehzva a teszt sztályk, akkr nem kell mást tenni a futtatásukhz, mint a megfelelő buildelés fázist kiválasztani és a tesztelés autmatikusan megtörténik(mvn test). Ilyenkr ------------------------------------------------------- T E S T S ------------------------------------------------------- Running hu.neurn.sampletest Tests run: 3, Failures: 1, Errrs: 0, Skipped: 0, Time elapsed: 0.03 sec <<< FAILURE! 34_Maven intr 12/15

Results : Failed tests: testgetfailstring(hu.neurn.sampletest) Tests run: 3, Failures: 1, Errrs: 0, Skipped: 0 egy hasnló rövid riprtt készít a maven. Ha valamelyik unit teszt sikertelenül futtt le, akkr a buildelés sikertelen lesz. Lehet készíteni a tesztelésről riprtt a Maven SureFire plugin segítségével. A plugin már a sima teszt lefutásakr dlgztt és létrehztt a target könyvtárban surefire-reprts mappát, ami a riprtkészítéshez szükséges adatkat tartalmazza. A riprt html ldalba való generálásáhz mvn surefire-reprt:reprt parancst kell kiadni. Ilyenkr a target könyvtárba generálódik egy site mappa, amiben megtalálható surefire-reprt.html. A html áttekinthetősége érdekében érdemes lefuttatni a site plugint (mvn site), amely a prjektről gyűjtött infrmációk alapján felépít néhány html ldalt. A surefire-reprt.html-ben jól látszik melyik unit teszt vlt sikertelen, illetve a keletkező hiba is lvasható. 3.7.4 Flex prjekt frdítása maven-ant pluginnal A jelenlegi legújabb Flex-ben (Flex 4) fejlesztett alkalmazásk frdítását maven plugin segítségével nem lehet megldani. Erre a feladatra SNAPSHOT illetve alpha váltzatk léteznek a pluginkból. A Flex SDK tartalmaz egy ant-t aminek segítségével visznt már le lehet frdítani a prjektet. Ahhz, hgy a mavenbőlants taszkkat tudjunk futtatni, egy ant pluginra lesz szükség. Az antpluginnak egy galja van, a run. Ezzel indít antstaskkat. A plugin a pm.xmlben: <plugin> <artifactid>maven-antrun-plugin</artifactid> <versin>1.6</versin> <executins> <executin> <phase>cmpile</phase> <cnfiguratin> <target> <taskdef resurce="flextasks.tasks" classpath="${flex_task}/flextasks.jar"/> <mxmlc file="${flash_src}/main/main.mxml" utput="target/${artifactid}-${versin}/flash/utput.swf"> <lad-cnfig filename="${flex_home}/framewrks/flex-cnfig.xml"/> <surce-path path-element="${flex_home}/framewrks"/> <!--surce-pathpath-element="${flash_src}"/--> <cmpiler.debug>false</cmpiler.debug> </mxmlc> </target> </cnfiguratin> <gals> <gal>run</gal> 34_Maven intr 13/15

</gals> </executin> </executins> </plugin> A taskdefben be kell állítani az antstaskt, ami majd a frdítást végzi, ezt a Flex SDK adja. Meg kell adni a mxmlc file ban hl van a prjekt main.mxmlje, az utputban pedig azt, hgy hva készüljön az swf. Ha a frdítás ezek után sikertelen, akkr a surce-path pathelement="${flash_src} t is be kell állítani, hgy a frráskban lévő hivatkzásk megfelelőek legyenek. Ha ez egy webes prjekt része, akkr cmpile fázisban, ha elkészül a swf és az utput úgy van megadva, hgy a target könyvtár megfelelő könyvtárába máslódjn, akkr a kész artifactban már benne lesz az swf. A használatáhz szükséges váltzókat a pm.xml lehet definiálni, az alábbi módn: <prperties> <prject.build.surceencding>utf-8</prject.build.surceencding> <FLEX_HOME>d:/tmp/flex_sdk</FLEX_HOME> <FLEX_TASK>d:/tmp/flex_sdk/ant/lib</FLEX_TASK> <FLASH_SRC>src/main/flash-surce</FLASH_SRC> </prperties> 34_Maven intr 14/15

4 ÖSSZEGZÉS A maven és a hzzá fejlesztett rengeteg pluginmegkönnyítheti a munkát, autmatizálhat egyes flyamatkat.a knfiguráció átlátható leírását az xml frmátumban való megadás segíti, módsítása egyszerű. Nagybb prjektek esetén a megfelelő pm.xml struktúra kialakítása nem egyszerű, de templatek létrehzásával ez is egyszerűsíthető. A flyamatkat elég csak egyszer megadni, utána autmatikusan végre tudnak hajtódni, így ki lehet zárni az emberi hibát pl.: kihagytt lépés. Az esettanulmány elkészítéséhez munkájával hzzájárult Tóth Gábr a Neurn Szftver Kft. alkalmazttja. 5 IRODALOMJEGYZÉK http://maven.apache.rg/ http://carg.cdehaus.rg/ http://jtechlg.blgspt.cm/2010/04/maven-kezdlepesek.html http://mj.cdehaus.rg/ 34_Maven intr 15/15