Maven

Apraksts:
Maven ir jaunākas paaudzes projektu būvēšanas rīks, salīdzinot ar Ant - šim rīkam ir noklusētais direktoriju izvietojums, standartizēts projekta dzīvescikls, kuru lietotājs var papildināt ar konkrētajam projektam raksturīgām īpatnībām. Maven atbalsta arī JAR bibliotēku transitīvās atkarības, automātiski lejupielādē nepieciešamos failus no Interneta un glabā konkrēto JAR versiju ne vairāk kā vienā eksemplārā (arī, ja to izmanto daudzi projekti).
Lejupielāde:
http://maven.apache.org
Priekšnoteikumi:
Jābūt instalētam J2SDK un uzstādītam JAVA_HOME.
  • Atarhivēt failu maven_2.0.7_bin.zip, piemēram, zem c:\tools.
  • Izveidot jaunu vides mainīgo M2_HOME, kas norāda uz Maven instalēšanas vietu, piemēram, c:\tools\maven-2.0.7
  • Pievienot jaunu direktoriju Path sistēmas mainīgajam - proti direktoriju %M2_HOME%\bin.

Kā pārbaudīt instalāciju

  • Aizvērt DOS un Total Commander logus, kuri tika atvērti pirms vides mainīgo (environment variables) pārdefinēšanas.
  • Atvērt jaunu DOS logu (patvaļīgā direktorijā), ierakstīt komandu "mvn -version" un pārliecināties, ka atbilde izdrukā Maven versijas numuru.

Tukša projekta veidošana ar Maven

  • Rīkam Maven ir virkne iebūvēto projektu "arhetipu", kas ļauj ar vienu komandu izveidot pareizu direktoriju izvietojumu, kurā atliek iekopēt savu saturu. Piemēram, JAR projekta radīšanai pietiek izpildīt šādu DOS komandu:
mvn archetype:create -DgroupId=com.test -DartifactId=mytest -DpackageName=com.test.mytest
  • Šis skripts izveido "mytest" apakšdirektoriju. Javas failus var veidot zem mytest/src/main/java un JUnitu testus - zem mytest/src/test/java. Maven rīks pats izveido divas failu sagataves - attiecīgi App.java un AppTest.java, kas atrodas komandrindā norādītajā Javas pakotnē com.test.mytest.
  • Lai kompilētu šo projektu un izveidotu JAR failu, atvērt DOS logu direktorijā "mytest" (t.i., kur atrodas pom.xml fails kopā ar pareizo direktoriju izvietojumu).
  • Izpildīt komandu
    mvn package
    
  • Pārliecināties, ka tiek izpildīti JUnit testi un Javas kods zem mytest/src/main/java tiek arhivēts JAR failā.
  • Pārliecināties, ka direktorijā c:\Documents and Settings\username\.m2 (vai arī citā direktorijā, kas ir ir Jūsu "mājas direktorija" jeb vides mainīgā HOME vērtība) izveidojas apakšdirektorija "repository", kurā ir vairāki faili, t.sk. apakšdirektorija junit/junit/3.8.1. JUnit ir lejupielādēts tādēļ, ka atkarība no JUnit bibliotēkas bija norādīta Maven arhetipa gjenerētajā pom.xml failā:
    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>3.8.1</version>
       <scope>test</scope>
    </dependency>
    

Maven lietošana aiz ugunsmūra

Dažās programmēšanas vidēs Maven komandas (izņemot triviālo "mvn -version") nevar normāli palaist, jo Maven rīks neprot piekļūt Internetam, t.i. nespēj savākt pat savām vajadzībām nepieciešamās JAR bibliotēkas (nemaz nerunājot par projektos norādītajām atkarībām).

Šādos gadījumos jāuzzina starpniekserveris (proxy server) un jāiekopē zem %HOME%/.m2/ fails settings.xml:

<settings>
  <proxies>
    <proxy>
      <protocol>http</protocol>
      <host>proxy.accenture.lv</host>
      <port>8080</port>
      <nonProxyHosts>localhost</nonProxyHosts>
    </proxy>
  </proxies>
</settings>

Maven un Eclipse savstarpējā integrācija

Maven projektu izstrādes laikā mēdz būt ērti lietot Eclipse izstrādes vidi. Izrādās, ka abi Eclipses konfigurācijas faili - .project un .classpath, kas parasti atrodas Javas projekta saknes direktorijā ir iegūstami no pom.xml. Piemēram, .classpath failā tiek uzskaitītas visas JAR bibliotēkas, kas minētas pom.xml kā projekta atkarības (ieskaitot arī netiešās atkarības - JAR failus, ko projekts tieši neizmanto, bet kas savukārt nepieciešami pom.xml norādīto bibliotēku izpildei).

mvn -Declipse.workspace=d:/workspace eclipse:add-maven-repo

Šo komandrindu pietiek izpildīt vienu reizi - tā uzstāda Eclipse globālajā konfigurācijā ceļu uz Maven JAR failu repozitoriju - "M2_REPO". Šī mainīgā vērtību pēc tam var aplūkot, paņemot Eclipse izvēlni Window -> Preferences un atverot kategoriju Java -> Build Path -> Classpath Variables.

Pēc tam ikviena Maven projekta saknes direktorijā (kur ir pom.xml fails, var izpildīt sekojošu komandrindu:

mvn eclipse:clean eclipse:eclipse

Šī komanda izveido jaunus .project un .classpath failus, turklāt visiem JAR failiem ir norādīti relatīvas atrašanās vietas attiecībā pret Maven repozitoriju, kas norādīts mainīgajā M2_REPO. Sk. vairāk par Mavena Eclipse spraudni. Tiktāl par Eclipses apkalpošanu no Maven vides.

Ir arī spraudnis, kurš nodrošina Mavena apkalpošanu no Eclipse vides - t.sk. Eclipse vidē izpildot Maven darbības (t.i. lai nav jālieto DOS komandrinda). Par to sk. Maven prezentāciju.

Trūkstošo JAR bibliotēku instalēšana

Ir virkne JAR failu, kuri nav atrodami standartajos Maven repozitorijos - piemēram, http://repo1.maven.org/maven2/, jo , šo failu brīvu pieejamību apgrūtina licenzes nosacījumi. Tipisks piemērs ir JTA (Java Transaction API), kuru Sun Microsystems ļauj lejupielādēt tikai tiem, kuri ir izlasījuši un piekrituši licenzes līgumam.

Maven projekta būvēšanas laikā drukās paziņojumus par visiem JAR failiem, kurus neizdevās atrast Interneta repozitorijos. Lai instalētu šādus JAR failus, var izčekot sekojošu projektu - http://java-eim.googlecode.com/svn/trunk/java-eim-maven-lib un palaist visus BAT skriptus, kuri ir atrodami šī projekta saknes direktorijā. Piemēram, JTA bibliotēkas instalēšanai var izpildīt sekojošu komandrindu (tā jāraksta vienā rindā):

mvn install:install-file -DgroupId=javax.transaction -DartifactId=jta 
   -Dversion=1.0.1B -Dpackaging=jar -Dfile=jta-1_0_1B-classes.jar

Maven lietošana bez Interneta

Maven izveidoto repozitoriju (apakšdirektoriju %HOME%/.m2/repository) var pārkopēt no tāda datora, kur Internets ir. Pirms kopēšanas nepieciešams pārliecināties, ka visas Mavena izplatītajām komandām vajadzīgās bibliotēkas uz Internetam pieslēgtā datora ir jau savāktas.

Lai garantētu, ka "mvn" komandrinda nepieslēdzas Internetam, var visas komandas lietot kopā ar "-o" jeb "--offline" karodziņu. Ja trūkst kāds no Jūsu projekta atkarībās minētajiem JAR failiem, tos var instalēt ar Maven komandu palīdzību, kā aprakstīts iepriekšējā nodaļā (piemērs par JTA).

Par Maven darbināšanu, izmantojot Jūsu lokālajā serverī glabātu repozitoriju sk. Creating an In-House Repository.