Projektek menedzselése Apache Maven segítségével
Projektek menedzselése Apache Maven segítségével
1 TARTALOMJEGYZÉK 1 Tartalomjegyzék ................................................................................................................... 2 2 Bevezetés ............................................................................................................................ 2 3 Leírás ................................................................................................................................... 2 3.1 Alapfogalmak ....................................................................................................................... 2 3.2 Maven beállítása .................................................................................................................. 4 3.3 Repository ............................................................................................................................ 5 3.4 Maven projektek felépítése és generálása............................................................................ 5 3.4.1 Új Maven projekt generálása ............................................................................................... 5 3.5 Pom.xml fontosabb részei .................................................................................................... 6 3.6 Néhány maven plugin ........................................................................................................... 8 4.6.1 clean ................................................................................................................................... 8 3.6.2 compiler............................................................................................................................... 8 3.6.3 deploy ................................................................................................................................. 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 cargo ................................................................................................................................. 10 3.7 Néhány példa Maven-ben .................................................................................................. 10 3.7.1 Eclipse projekt készítés mavennel ..................................................................................... 10 3.7.2 Webes projekt készítése és telepítése Tomcat-be............................................................. 11 3.7.3 Unit tesztek futtatása és riportozása .................................................................................. 12 3.7.4 Flex projekt fordítása maven-ant pluginnal ........................................................................ 13 4 Összegzés ......................................................................................................................... 15 5 Irodalomjegyzék ................................................................................................................. 15
2 BEVEZETÉS A Maven egy az „The Apache Software Foundation” által folyamatosan fejlesztett eszközök közül, amely a szoftverfejlesztési életciklus néhány pontján nyújt segítséget. Egy fordítási feladatokat ellátó eszköznek indult, de az igények növekedésével a funkcionalitása sokat bővült, de fő feladata talán, a fejlesztők által elkészített forráskódból, megfelelő konfiguráció alapján a program fordítása, tesztelése. A tanulmány a maven alapjait illetve néhány plugin-t hivatott bemutatni.
3 LEÍRÁS 3.1
Alapfogalmak •
pom.xml: „Project Object Model”. A projekt konfigurációját itt lehet megadni, a beállításokat xml struktúrában kell megadni.
34_Maven
intro
2/15
Projektek menedzselése Apache Maven segítségével
•
project: Alapegység. Az elemei a modulok. A projekt könyvtárban lévő pom.xml-ben mondhatjuk meg, mik a modulok és definiálhatunk ezek között egy fordítási sorrendet.
•
archtype: Maven projekt template. Segítségével legenerálhatunk maven projektet, illetve saját magunk is készíthetünk templatet projekt definiálására.
•
artifact: Egy már meglévő projekt vagy modul lefordított változata, amelynek van egy azonosítója artifactId és egy groupId-ja, illetve verziószáma. A buildelési folyamat végén is artifact áll elő, repositorykból érhetők el. Pl.: Az apache struts2-core artifactját, M2_REPO/org/apache/struts/struts2-core alatt lehet elérni, ahol a struts2-core az arctifactId. Ezen belül lesznek a verziószámozott mappák, és azon belül a konkrét verziók. <artifactId>struts2-core
•
module: Nagyobb projektek esetén,amikor több részre lehet tagolni funkció vagy valamilyen szempont alapján a projektet akkor a részeket moduloknak nevezi a maven. Ha ezeknek a részeknek a fordítása vagy telepítése összefügg, akkor modulként fel lehet venni őket egy pom.xml-be és közöttük sorrendet lehet megállapítani. A modulok pom.xml-jei egymás után lesznek feldolgozva. <modules> <module>business <module>web <modules>
•
dependency: Függőség, amit a pom.xml-ben be lehet állítani, hogy egy projektnek vagy modulnak mire van szüksége a fordítás, futtatás vagy egyéb scope estén. A struts2-core dependency a pom.xml-ben: <dependency>
org.apache.struts <artifactId>struts2-core
2.2.1
•
scope: A dependencyhez kapcsolódó fogalom. Itt lehet megadni, hogy a függőségként felvett artifactra mikor lesz szükség. o
compile: Ez az alapértelmezett, ilyenkor nem kell megadni semmilyen scope-ot a pom.xml-ben. A függő projektek is látni fogják. Egy webes projektnél a lib-ek közé automatikusan bemásolódik, és belecsomagolódik a war-ba. A buildelési életciklus összes pontján szerepel a classpathon a függőség.
o
provided: Azok a függőségek, amik kellenek futási és fordítási időben is, de a futtató környezetben rendelkezésre állnak, azokat nem kell például egy webes projekt libjei közé berakni. Ilyen például a ServletApi, ami egy webes konténerben vagy alkalmazás szerverben szerepel, de fordításkor is szükség van rá. Csak a fordítási és a tesztelési classpathokon szerepel a függőség.
34_Maven
intro
3/15
Projektek menedzselése Apache Maven segítségével
o
runtime: Az a függőség, ami nem szükséges fordítás során, de futás közben igen. Ilyenkor a függőség csak a test classpathon szerepel.
o
test: Az alkalmazás futásához nem szükséges a függőség, de a tesztesetek futtatásához igen.
o
system: Hasonló a providedhoz, de ezt nem kell a repositoryban keresni, a rendszerben mindig megtalálható. PL.: <dependency>
com.sun <artifactId>tools
1.4.2 <scope>system <systemPath>${java.home}/../lib/tools.jar
o
import: maven 2.0.9-től lehet megadni. Csak apom típusú függőségekre lehet megadni a <dependencyManagement>részben. Egy másik projektben definiált függőségeket lehet vele felhasználni.
•
repository: Artifactok gyűjteménye. Létezik saját gépen lokális repository illetve meg lehet adni különbő publikus repositorykat is.
•
plugin: A maven pluginokból áll, amiket a pom.xml-ből tudunk konfigurálni. A maven-ben sok alapból definiált plugin létezik, de sajátokat is lehet írni. Pl.:maven-compiler-plugin amiben meg van adva milyen verzió a forrás és milyen legyen a lefordított.
org.apache.maven.plugins <artifactId>maven-compiler-plugin <source>1.5 1.5
•
goal: Egy plugin által elvégzendő funkciót adunk meg a goal-lal. Pl.:maven-compilerplugincompilegoal-ja:
compile
•
phase: A buildelési folyamat részekből áll pl: validálás, fordítás, tesztelés. így meg lehetadni, hogy a definált feladat mikor fusson le. http://maven.apache.org/guides/introduction/introduction-to-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áltozót. Ezután be kell állítani az M2_HOME-ot ami maga a maven telepítési helye a maven mappával együtt, majd fel kell venni a PATH környezeti változóba a M2_HOME/bin könyvtárat. Ha fordítások során valamilyen globális beállítást kellenealkalmazni, akkor ezt a 34_Maven
intro
4/15
Projektek menedzselése Apache Maven segítségével
MAVEN_OPTS környezeti változóba kell beállítani. A repository beállításokat 3 helyen lehet változtatni: M2_HOME/conf/settings.xml, a USER_HOME/.m2/settings.xml, illetve be lehet állítani külső repositorykat a pom.xml-ben is. Ezekben lehet megadni a repository helyét, és ha a lokális repositoryban nem található a szükséges artifact, akkor azt hol keresse.
3.3
Repository
A repository, mint már írtam,artifactok gyűjteménye. Lokálisan a gépen megtalálható a USER_HOME/.m2/repository alatt(alapbeállításként). A settings.xml-ben definiáltak alapján, ha lokálisan nem létezik egy artifact, akkor az le is fog ide töltődni. A fordítást lehet offline módban futtatni, ilyenkor csak a lokális repositoryban tárolt artfactok lesznek használva. Ezt a –o kapcsolóval lehet beállítani. Repository szerverek működtetésére és menedzselésére is léteznek eszközök pl.: Archiva, Nexus, Artifactory
3.4
Maven projektek felépítése és generálása
Egy Java-s projekt számára nemlétezett előre definiált projekt felépítés, valamilyen szabvány ami megmondaná egy projekt hogy is nézzen ki, így a különböző projektekhez különböző scripteket kellett létrehozni, hogy a fordítás sikeres lehessen. A Maven felkínál egy lehetőséget, mappa struktúrát, amely mentén automatikusan tud működni, persze van lehetőség eltérni tőle.
Application/Library sources
src/main/java
src/main/resources Application/Library resources src/main/filters
Resource filter files
src/main/assembly
Assembly descriptors
src/main/config
Configuration files
src/main/webapp
Web application sources
src/test/java
Test sources
src/test/resources Test resources src/test/filters
Test resource filter files
src/site
Site
LICENSE.txt
Project's license
NOTICE.txt
Notices and attributions required by libraries that the project depends on
README.txt
Project's readme
target
The target directory is used to house all output of the build.
3.4.1
Új Maven projekt generálása
A maven lehetőséget kínál az általa definiált projektstruktúra generálására, léteznek előre definiált archetypok pl.: Archetype ArtifactIds
34_Maven
intro
Description
5/15
Projektek menedzselése Apache Maven segítségével
maven-archetypearchetype
An archetype which contains a sample archetype.
maven-archetypej2ee-simple
An archetype which contains a simplifed sample J2EE application.
maven-archetype-mojo
An archetype which contains a sample a sample Maven plugin.
maven-archetypeplugin
An archetype which contains a sample Maven plugin.
maven-archetypeplugin-site
An archetype which contains a sample Maven plugin site.
maven-archetypeportlet
An archetype which contains a sample JSR-268 Portlet.
maven-archetypequickstart
An archetype which contains a sample Maven project.
maven-archetypesimple
An archetype which contains a simple Maven project.
maven-archetype-site
An archetype which contains a sample Maven site which demonstrates some of the supported document types like APT, XDoc, and FML and demonstrates how to i18n your site.
maven-archetype-sitesimple
An archetype which contains a sample Maven site.
maven-archetypewebapp
An archetype which contains a sample Maven Webapp project.
Egyszerű projektgeneráláshoz parancssorban be kell gépelni: mvnarchetype:generate. Ezután a kiírt listából ki kell választani a generálandó projekttípust, utána a típusnak megfelelő beállításokat és elkészül a projekt. Egy maven-archetype-webapp esetén létrejön egy pom.xml, src/main/ mappaszerkezet benne a resources és webapp mappával, amiben már benne van a WEB-INF egy web.xml-el.
3.5
Pom.xml fontosabb részei •
groupId:
... Meg kell adni egy egyedi azonosítót, amely
vonatkozhat a készítőre vagy a projektre. Az egyediség azért fontos, mert rengeteg artifact gyártó létezik és ha már egy meglévő csoport neve kerül megadásra, akkor abból kavarodások lehetnek, ha fel lesz töltve egy külső repositoryba. •
artifactId : <artifactId>... Maga a projekt azonosítója. A groupIdval egyedi projektet kell, hogy azonosítsanak.
•
version:
... A projekt verziószáma. Ha éppen fejlesztés alatt lévő verzióról van szó, akkor szokás SNAPSHOT-ként megjelölni. Ha repositoryba lesz deployolás, akkor a SNAPSHOT kicserélődik UTC formátumbeli dátumra. A pom.xml-ben lehet továbbra is SNAPSHOT-ként hivatkozni és ilyenkor a legújabb dátummal rendelkezőt fogja használni az adott verzióból.
•
build:
.. .A projekten végrehajtandó feladatokat két helyen lehet megadni a pomban. Vagy <project> ben megadott build tagekben, vagy a project tagekben definiálhatunk profile-okat és azokban. o
defaultGoal:<defaultGoal>.. . A projekt könyvtárában kiadott mvn parancs után az itt definiált életciklusbeli pont elérése a cél.
34_Maven
intro
6/15
Projektek menedzselése Apache Maven segítségével
o
directory:
... Azt állítja be, hogy abuildelés folyamán előállított
eredmények
hova
kerüljenek.
A
maven
alapértelmezetten
a
Itt
megadni
a
${basedir}/target–et használja. o
resources:
..
.
kell
azokat
konfigurációs fájlokat, leírókat, amelyek nem a mavennek alapértelmezettként megadott resources mappában vannak. •
profile:<profile>..Előfordul hogy a projektet különböző rendszerekben vagy különböző rendszereken kell buildelni. Ilyenkor érdemes profile-okat létrehozni, amelyben meg lehet adni az adott rendszer sajátosságait, és ha a profile nevével paraméterezzük a futtatást, akkor csak a megfelelő profileban leírtak fognak történni (mvn – P profile_name).
•
parent: <parent>... A projektek, modulok közötti öröklődés, aggregáció eszköze. A következő elemek lesznek összevonva: o
függőségek
o
közreműködők és fejlesztők leírása
o
pluginok a beállításaikkal
o
resources
Megadása: <parent>
.. <artifactId>..
..
Abban az esetben, ha a parent nem közvetlenül 1 szinttel feljebb van a mappaszerkezetben, akkor meg kell adni a helyét:
.../parent/pom.xml
•
dependencyManagement: <dependencyManagement>... A projektek közötti függőségek esetén, ha több projekt is ugyanazt a függőséget használja, érdemes a dependencyManagment részben felvenni a függőségeket a megfelelő verziószámokkal és beállításokkal. Azok a projektek amik öröklik ezeket a tulajdonságokat, azokban már elég lesz csak a plugin artifactId-ját és groupId-ját megadni(meg a típust ha nem jar típusról van szó). http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
•
pluginManagement:
... Hasonlóan a dependencyManagement-hez ezt
is
a projektek
közötti függőségek
kezelésének
megkönnyítésére lehet használni. Ebben a részben pluginokat és azok konfigurációját kell 34_Maven
intro
7/15
Projektek menedzselése Apache Maven segítségével
megadni, majd a gyerek pom.xml-ekben ezekre automatikusan történik a hivatkozás, a plugin groupId és artifactId-jával. A konfigurációt felül lehet definiálni a gyerek pom.xmlekben, egyszerűen csak meg kell adni az új információkat és azok máris felülírták az eddigi beállításokat az adott gyerek pom.xml-ben.
3.6
Néhány maven plugin
3.6.1
clean
Eltávolítja a buildelés során keletkező fájlokat. Egy goal van, a clean. A cleannek saját életciklusa van: pre-clean->clean->post-clean. Ezt a plugint nem kell megadni a pom.xml-ben ahhoz, hogy használni lehessen, csak akkor, ha szeretnénk beépíteni a buildelési életciklusba. Használata: mvn clean vagy mvn clean:clean
org.apache.maven.plugins <artifactId>maven-clean-plugin
3.6.2 A
compiler
forrásállományok
fordítására
lehet
használni.
Alapértelmezetten
a
java
fordítóját
használja(javac). Két goal van: compile, ami a program forráskódot fordítja a compile fázisban, a másik a testCompile, ami a teszt kódokat fordítja le testCompile fázisban. A java-s fordítót is innen lehet paraméterezni.
org.apache.maven.plugins <artifactId>maven-compiler-plugin
3.6.3
deploy
Ha nem elég csak a saját repositorynkba berakni a projekt buildelése során elkészült artifactokat, akkor a deploy pluginnal egy külső,távoli repositoryba fel lehet rakni azokat. Ha a buildelési életciklusba kell ezt a funkciót beépíteni, akkor a deployplugindeploygoalját kell használni, ha nem ebben az életciklusban, akkor a deploy-file goalt, ahol meg kell adni, hogy mi az amit fel kell tölteni a külső repositorykba.
org.apache.maven.plugins <artifactId>maven-deploy-plugin
3.6.4
install
Az install plugin az install fázisban felrakja a local repositoryba az arctifactot. A pomban konfigurációt nem kell külön megadni, egyszerűen mvninstall –al működni fog. Lehetőség van nem a build során előálló artifact felrakására is, ilyenkor ainstall-filegoalt kell használni, ahol meglehet mondani mi kerüljön be a local repositoryba.
org.apache.maven.plugins 34_Maven
intro
8/15
Projektek menedzselése Apache Maven segítségével
<artifactId>maven-install-plugin
3.6.5
verifier
Integrációs teszteléshez nyújt segítséget. Egy goal van, a verify. Használatához 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.
org.apache.maven.plugins <artifactId>maven-verifier-plugin
3.6.6
ear
Az ear plugin segítségével ear fájlokat lehet generálni, ki tudja generálni a telepítési leírást is.
org.apache.maven.plugins <artifactId>maven-ear-plugin
3.6.7
jar
Elkészíti a megadott forrásfájlokból és resourceokból a jar fájlt, ha jar goallal van definiálva, ha test-jarral, akkor a tesztforrásokból készül a jar.
org.apache.maven.plugins <artifactId>maven-jar-plugin
3.6.8
site
A projektről készít riportot. Képes az elkészült riportot webes konténerbe telepítve futtatni, illetve a megadott helyre másolva publikálni. A site pluginnek saját életciklusa van: pre-site
executes processes needed prior to the actual project site generation
site
generates the project's site documentation
post-site
executes processes needed to finalize the site generation, and to prepare for site deployment
site-deploy
deploys the generated site documentation to the specified web server
org.apache.maven.plugins <artifactId>maven-site-plugin
3.6.9
checkstyle
A forráskódok készítésekor nem elegendő az, hogy az elkészült kód forduljon, a megfelelő konvenciókat be kell tartani. Ezek ellenőrzésére létrehozott checkstyle konfigurációk betartását lehet ellenőrizni és riportozni a projekten.
org.apache.maven.plugins <artifactId>maven-checkstyle-plugin 2.6 34_Maven
intro
9/15
Projektek menedzselése Apache Maven segítségével
A pluginban az alábbi előredefiniált konfigurációk vannak: sun_checks.xml, turbine_checks.xml, avalon_checks.xml, maven_checks.xml. Saját konfiguráció megása:
checkstyle.xml
3.6.10 release A plugin a verzióváltástsegíti egy projekten. Verziókezelő használata is be van építve, így automatikusan tud tag-et készíteni egy adott release kiadáskor, ezen felül elvégzi a pom.xml-ben a verzióváltásokat, figyel pl.: van e Snapshot verzióra hivatkozás.
org.apache.maven.plugins <artifactId>maven-release-plugin
3.6.11 cargo Webes konté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 hogy a buildelés során már be is lehessen deployolni az alkalmazást, a szervert le lehessen állítani, elindítani. Támogatja többek között a Weblogic, Tomcat, Jboss több verzióját. http://cargo.codehaus.org/
org.codehaus.cargo <artifactId>cargo-maven2-plugin
3.7 3.7.1
Néhány példa Maven-ben Eclipse projekt készítés mavennel
A projektek fejlesztése közben felhasznált függőségek kezelését két helyen kell folyamatosan szerkeszteni. Egyik a mavenpom.xml, illetve a kódíráshoz, alábbi példában Eclipse, használt fejlesztői eszközben. Ez körülményes, illetve kihagyások, verziószám eltéréseket okozhat. Ennek kezelésében nyújt segítséget a maven eclipse-es pluginje. Fontos hogy a maven egy előre meghatározott változóhoz fogja megadni a függőségeket. Ez a változó M2_REPO ami a local repositoryra kell hogy mutasson. Ezért első lépés ezt az eclipseworkspace-ben beállítani. Ezután a workspace-ben ki kell adni a következő parancsot: mvn archetype:create -DgroupId=hu.neuron -DartifactId=maven-eclipse-test Ezzel létrejött egy egyszerű javas projekta buildeléshez szükséges pom.xml-el együtt. Ahhoz hogy ezt be is lehessen importálni eclipse-be, szükség lesz a .project és a .classpath fájlokra. Ezek legeneráláshoz a
34_Maven
intro
10/15
Projektek menedzselése Apache Maven segítségével
mvn
eclipse:eclipse parancsot kell lefuttatni a pom.xml könyvtárában. A pom.xmlben
megfigyelhető, hogy a junit, vagyis a teszteléshez szükséges framework jar fájlja már dependencyként szerepel, és a legenerált classpath fájlban is benne van:
Látszik hogy az eclipsben használt változón keresztül van a hivatkozás a függőségre. Ez azért jó,mert ha csapat dolgozik a projekten és valamilyen verziókezelő rendszert használnak, vagy csak egymás között megosztják a forrást és a projektet, akkor ha valaki új függőséget vezet be a projektbe, akkor ennek beállításával a többieknek nem kell foglalkozni csak használni a módosított classpatht, mert a változó elrejti a tényleges gépfüggő elérési utat. Ha egy új függőséget kell bevezetni a projektbe, akkor nem kell mást tenni, mint kiegészíteni a pom.xml-t és lefuttatni újra a mvn eclipse:eclipse parancsot. Pl.: be kellene rakni egy log4j függőséget. Ha nem tudjuk, milyen groupId val és milyen artifactId-val kell rá hivatkozni, akkor érdemes egy maven repositoryban keresni. http://mvnrepository.com. Log4j-re keresve előjönnek a lehetőségek. Ez egy külső repository, itt megtalálhatjuk a szükséges artifactot. Kiválasztva az Apache Log4j-t a megfelelő verziószámmal, ott van a pom.xml-beli hivatkozási forma. <dependency>
log4j <artifactId>log4j
1.2.16 Ezután lefuttatva az eclipse plugint megváltozott a classpath fájl, és most már szerepel benne a log4j-re a hivatkozás. A projekt könyvtárában egy mvn install parancsra elkészül a jar fájlt a target könyvtárban.
3.7.2
Webes projekt készítése és telepítése Tomcat-be
Webes projekt készítéséhez vagy a már „Új projekt” részben leírtak mentén kell eljárni, vagy egyszerűen csak a következő paranccsal is lehet dolgozni: mvn archetype:create -DgroupId=hu.neuron.testapp -DartifactId=new-webapp DarchetypeArtifactId=maven-archetype-webapp
Létrejön egy egyszerű webes projekt. A projekt 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 állomány. Érdemes megfigyelni, hogy míg az
előző
projekt
pom.xml-jében
a
<packaging>jar
volt,
itt
már
<packaging>war. Ebből fogja tudni a maven, hogy mit kell úgymond előállítani, ez milyen projekt. El kell készíteni a deployoláshoz szükséges beállításokat. pom.xml a beállítás után: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 34_Maven
intro
11/15
Projektek menedzselése Apache Maven segítségével <modelVersion>4.0.0
hu.neuron.testapp <artifactId>new-webapp <packaging>war
1.0-SNAPSHOT new-webapp Maven Webapp http://maven.apache.org <dependencies> <dependency>
junit <artifactId>junit
3.8.1 <scope>test
new-webapp org.codehaus.mojo <artifactId>tomcat-maven-plugin http://localhost:8080/manager <server>mytomcat <path>/new-webapp
Fontos hogy a repositoryban be kell állítani a tomcathez az authentikációt: <server>
mytomcat <username>test <password>test
Ezek után, ha a war elkészült, mvn install utasításra, akkor ki lehet adni a mvn tomcat:deploy parancsot, és máris be van deployolva. Tipp: ha nem működik a plugin és 401-es hibát látunk a konzolban, akkor érdemes a címet ellenőrizni. (localhost helyett lehet,hogy gépnév kell) 3.7.3
Unit tesztek futtatása és riportozása
A maven előre definiálja a tesztosztályok helyét a projektben:src/test. Ha ide lettek létrehozva a teszt osztályok, akkor nem kell mást tenni a futtatásukhoz, mint a megfelelő buildelés fázist kiválasztani és a tesztelés automatikusan megtörténik(mvn test). Ilyenkor ------------------------------------------------------T E S T S ------------------------------------------------------Running hu.neuron.SampleTest Tests run: 3, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.03 sec <<< FAILURE! 34_Maven
intro
12/15
Projektek menedzselése Apache Maven segítségével
Results :
Failed tests: testGetFailString(hu.neuron.SampleTest)
Tests run: 3, Failures: 1, Errors: 0, Skipped: 0
egy hasonló rövid riportot készít a maven. Ha valamelyik unit teszt sikertelenül futott le, akkor a buildelés sikertelen lesz. Lehet készíteni a tesztelésről riportot a Maven SureFire plugin segítségével. A plugin már a sima teszt lefutásakor dolgozott és létrehozott a target könyvtárban surefire-reports mappát, ami a riportkészítéshez szükséges adatokat tartalmazza. A riport html oldalba való generálásához mvn surefire-report:report parancsot kell kiadni. Ilyenkor a target könyvtárba generálódik egy site mappa, amiben megtalálható surefire-report.html. A html áttekinthetősége érdekében érdemes lefuttatni a site plugint (mvn site), amely a projektről gyűjtött információk alapján felépít néhány html oldalt. A surefire-report.html-ben jól látszik melyik unit teszt volt sikertelen, illetve a keletkező hiba is olvasható.
3.7.4
Flex projekt fordítása maven-ant pluginnal
A jelenlegi legújabb Flex-ben (Flex 4) fejlesztett alkalmazások fordítását maven plugin segítségével nem lehet megoldani. Erre a feladatra SNAPSHOT illetve alpha változatok léteznek a pluginokból. A Flex SDK tartalmaz egy ant-ot aminek segítségével viszont már le lehet fordítani a projektet. Ahhoz, hogy a mavenbőlantos taszkokat tudjunk futtatni, egy ant pluginra lesz szükség. Az antpluginnak egy goalja van, a run. Ezzel indít antostaskokat. A plugin a pom.xmlben:
<artifactId>maven-antrun-plugin 1.6 <executions> <execution> compile <mxmlc file="${FLASH_SRC}/main/main.mxml" output="target/${artifactId}-${version}/flash/output.swf"> <source-path path-element="${FLEX_HOME}/frameworks"/> false run 34_Maven
intro
13/15
Projektek menedzselése Apache Maven segítségével
A taskdefben be kell állítani az antostaskot, ami majd a fordítást végzi, ezt a Flex SDK adja. Meg kell adni a
mxmlc file
készüljön
az
swf.
element="${FLASH_SRC}–t
ban hol van a projekt main.mxmlje, az outputban pedig azt, hogy hova Ha
a
fordítás
ezek
után
sikertelen,
akkor
a
source-path
path-
is be kell állítani, hogy a forrásokban lévő hivatkozások megfelelőek
legyenek. Ha ez egy webes projekt része, akkor compile fázisban, ha elkészül a swf és az output úgy van megadva, hogy a target könyvtár megfelelő könyvtárába másolódjon, akkor a kész artifactban már benne lesz az swf.
A használatához szükséges változókat a pom.xml lehet definiálni, az alábbi módon: <properties> <project.build.sourceEncoding>UTF-8
d:/tmp/flex_sdk d:/tmp/flex_sdk/ant/lib src/main/flash-source
34_Maven
intro
14/15
Projektek menedzselése Apache Maven segítségével
4 ÖSSZEGZÉS A maven és a hozzá fejlesztett rengeteg pluginmegkönnyítheti a munkát, automatizálhat egyes folyamatokat.A konfiguráció átlátható leírását az xml formátumban való megadás segíti, módosítása egyszerű. Nagyobb projektek esetén a megfelelő pom.xml struktúra kialakítása nem egyszerű, de templatek létrehozásával ez is egyszerűsíthető. A folyamatokat elég csak egyszer megadni, utána automatikusan végre tudnak hajtódni, így ki lehet zárni az emberi hibát pl.: kihagyott lépés.
Az esettanulmány elkészítéséhez munkájával hozzájárult Tóth Gábor a Neuron Szoftver Kft. alkalmazottja.
5 IRODALOMJEGYZÉK http://maven.apache.org/ http://cargo.codehaus.org/ http://jtechlog.blogspot.com/2010/04/maven-kezdolepesek.html http://mojo.codehaus.org/
34_Maven
intro
15/15