Apache Maven
| Maven | |
|
|
|
| Fejlesztő | Jason van Zyl |
| Legfrissebb stabil kiadás | 3.0.5 (2013. február 23.) +/- |
| Legfrissebb fejlesztői kiadás | ismeretlen +/- |
| Programozási nyelv | Java |
| Operációs rendszer | Platformfüggetlen |
| Licenc | Apache Licenc 2.0 |
| A Maven weboldala | |
Az Apache Maven (röviden Maven) egy szoftver, amelyet szoftverprojektek menedzselésére és a build folyamat automatizálására lehet használni. Jason van Zyl készítette 2002-ben. Funkcionalitásában hasonlít az Apache Ant eszközhöz (és némi hasonlóságot mutat a PHP-s PEAR-rel és a perles CPAN-nal, de egyszerűbb és XML-alapú a konfigurációs modellje). A projektet az Apache Software Foundation hosztolja, ahol korábban a Jakarta Projekt részeként működött.
A Maven bevezeti a POM, azaz a Projekt Objektummodell (angolul: Project Object Model) fogalmát. Egy POM egy buildelendő projektet ír le és annak függőségeit. Az egyes lépéseket céloknak, angolul goal-oknak nevezik. Vannak előre definiált célok a tipikus feladatokra, mint például a kód fordítása és csomagolása, de a felhasználónak lehetősége van saját célokat is definiálni a projektspecifikus lépések végrehajtására.
A Maven hálózatképes, tehát szükség esetén dinamikusan is le tud tölteni komponenseket. Repository névvel illetik a különböző hosztok fájlrendszereinek azon mappáit, ahol a letölthető komponensek találhatók. A Maven nem csak a repository-kból való letöltést támogatja, hanem a készült szoftvercsomag feltöltését is. Ezzel az automatizálható le- és feltöltési mechanizmussal a Maven de facto szabványt próbál teremteni, de elég lassan fogadja el a Java közösség.
A Maven plugin alapú architektúrája lehetővé teszi tetszőleges parancssorból vezérelhető alkalmazás használatát. Ez elméletileg lehetővé teszi tetszőleges programnyelvekhez való pluginek készítését, de a gyakorlatban minimális mennyiségű nem javás plugin készült.
Tartalomjegyzék |
Konfiguráció helyett Konvenció [szerkesztés]
A Maven filozófiája a buildelés szabványosítása és ezáltal a szoftvertervezési minták terjesztése. A konvenciókhoz való ragaszkodás jelentős mértékben korlátozza a projektek variálhatóságát. Új projektek létrehozásához jól használható, viszont létező projektekhez nehezen kapcsolható, ha azok nem illeszkednek a Maven konvencióihoz. A Maven 2 verzióval azonban valamelyest enyhült a strukturális szigor.
Projektek életciklusa [szerkesztés]
Egy Maven projekt életciklusa a következő célokból (angolul goal-okból) áll:
- compile
- test
- package
- install
- deploy
Az alapötlet az, hogy az életciklus minden céljának végrehajtásához minden azt megelőző célnak sikeresen végre kell hajtódnia. Például az mvn install futtatásakor a Maven megvizsgálja, hogy az mvn package sikeresen lefutott-e már.
Vannak olyan célok is, amelyek az életcikluson kívül helyezkednek el, tehát a Maven nem futtatja őket feltétlenül, viszont a projekthez tartozó pom.xml fájlban, azaz a projekt objektummodelljében ezek a célok is hozzáadhatóak a projekt alapértelmezett életciklusához:
- assembly:assembly
- site
- site-deploy
Célok [szerkesztés]
Az alábbi szakaszok a gyakrabban használt célokat taglalják:
archetype:create [szerkesztés]
Új projektek létrehozására használható az archetype plugin create célja:
mvn archetype:create -DgroupId="com.programozo.kht" -DartifactId="valami-project" -Dversion="0.0.1"
Az archetype plugin használatát a Maven dokumentációja részletezi.[1]
compile [szerkesztés]
A forrásfájlok lefordítása a compile céllal történik:
- mvn compile
A forrásfájlok alapértelmezett helye a src/main/java/ mappa. A lefordított osztályok a target/classes/ mappába kerülnek alapértelmezésben.
test [szerkesztés]
A Unit Test-ek fordítását és futtatását a test cél hajtja végre:
- mvn test
A JUnit forrásfájlok alapértelmezett helye a src/test/java/ mappa, a lefordított tesztosztályok pedig a target/test-classes/ mappába kerülnek. A tesztek eredménye a target/surefire-reports/ mappába íródik alapértelmezésben.
package [szerkesztés]
Jar fájlt készít (alapértelmezésben ${artifactId}-${version}.jar névkonvencióval a target/ mappába):
- mvn package
install [szerkesztés]
Bemásolja a jar fájlt a ~/.m2/repository/${groupId}/${artifactId}/${version} mappába, azaz a lokális repository-ba.
- mvn install
deploy [szerkesztés]
- mvn deploy
projecthelp:effective-pom [szerkesztés]
A projektspecifikus beállítások kiiratására használható a projecthelp plugin effective-pom célja:
- mvn projecthelp:effective-pom
projecthelp:effective-settings [szerkesztés]
Az általános Maven beállítások kiiratására használható a projecthelp plugin effective-settings célja:
- mvn projecthelp:effective-settings
Java 5 kompatibilitás [szerkesztés]
A Maven alapértelmezésben Java 1.4 verzió szerint fordít, a Java 5 verziót explicit konfigurálni kell a POM-ban:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>

