Apache Maven

A Wikipédiából, a szabad enciklopédiából
Maven
Maven logo.svg

Fejlesztő Jason van Zyl
Legfrissebb stabil kiadás 3.2.3 (2014. augusztus 18.) +/-
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.

Konfiguráció helyett Konvenció[szerkesztés | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

Egy Maven projekt életciklusa a következő célokból (angolul goal-okból) áll:

  1. compile
  2. test
  3. package
  4. install
  5. 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 | forrásszöveg szerkesztése]

Az alábbi szakaszok a gyakrabban használt célokat taglalják:

archetype:create[szerkesztés | forrásszöveg szerkesztése]

Új projektek létrehozására használható az archetype plugin create célja:

mvn archetype:create -DgroupId="com.programozo.my" -DartifactId="my-project" -Dversion="0.0.1"

Az archetype plugin használatát a Maven dokumentációja részletezi.[1]

compile[szerkesztés | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

Jar fájlt készít (alapértelmezésben ${artifactId}-${version}.jar névkonvencióval a target/ mappába):

mvn package

install[szerkesztés | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

mvn deploy

projecthelp:effective-pom[szerkesztés | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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>

További információk[szerkesztés | forrásszöveg szerkesztése]