Maven

From RCUB
Jump to: navigation, search

Pored ociglednog (http://maven.apache.org/), ovo su neki linkovi koji bi mogli da budu korisni u mavenizaciji projekata:

 http://maven.apache.org/background/philosophy-of-maven.html

Ovo i nije neophodno, tri pasusa o sustini Maven-a, kako je nastao i sta propagira, sazeta poenta: Apache je kroz rad na svojim projektima usavrsio poslovni proces i na osnovu toga formirao Maven, koji bi trebalo da namece i olaksava sprovodjenje najboljih i najprirodnijih postupaka u radu na projektu (best practices).

 http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
 
 http://maven.apache.org/settings.html

Bitan momenat u settings fajlu - ukazivanje na lokalni repozitorijum...

 http://maven.apache.org/pom.html

Obratiti paznju na pakovanje (war/jar, verzija), navodjenje autora (ako je potrebno), setovanje repozitorijuma (vazan kada se planira koriscenje maven-a za objavljivanje release-ova), navodjenje zadataka (task tag), ciljeva (goal tag), plugin-ova (http://maven.apache.org/plugins/index.html), zavisnosti (dependencies)...

 http://maven.apache.org/guides/getting-started/index.html

Detaljno opisano koriscenje maven-a, mada ima bas dosta teksta, mozda je manje stresna varijanta za pocetak ovo:

 http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

Sto se tice mavenizacije postojeceg Eclipse projekta, postoji preporuka da se to radi ovako:

 http://i-proving.ca/space/Technologies/Maven/Maven+Recipes/How+to+Mavenize+an+Existing+Eclipse+Project

Pre pocetka mavenizacije projekta potrebno je instalirati Maven (prosto raspakivanje arhive i setovanje M2_HOME i PATH promenljive okruzenja), kao i m2eclipse dodatak za eclipse.

U gore navedenom linku se predlaze kreiranje novog maven projekta u eclipse (nakon instalacije m2eclipse plugin-a), a onda importovanje postojeceg eclipse projekta. Ja sam za nase projekte mavenizovala drugacije, tj menjala sam postojeci projekat, po sledecim koracima:

  1. u root-u projekta kreira se pom.xml fajl, i popune neophodni podaci (pakovanje, verzija, itd). Najveci deo posla u tom slucaju je navodjenje zavisnosti. Za jedan projekat potrebno je uociti koje biblioteke (tj. jar fajlove) koristi, i koje njihove verzije i to navesti u okviru dependency elemenata. U tom procesu treba voditi racuna o tome da ce neke biblioteke sa sobom povuci neke druge biblioteke (tranzitivne zavisnosti). Da ne bi doslo do nagomilovanja nepotrebnih jar-ova, moguce je eksplicitno iskljuciti neke biblioteke iz zavisnosti, ako se nista iz njih ne koristi u projektu. Preporucujem da se u toku ove procedure koristi maven komanda mvn dependency:tree iz komandne linije, a za odgovarajuci projekat, koja na osnovu pom.xml-a prikazuje sta sve biva dovuceno, i to u vidu stabla, gde su polazni cvorovi biblioteke navedene u pom.xml-u koji se dalje granaju u sve sto te biblioteke sa sobom vuku. Kada se u okviru tog stabla vidi visak, on se navede u exclusion tagu u okviru zavisnosti u pom.xml-u. Ista prica vazi i za slucaj da se neka biblioteka koristi na projektu ali u specificnoj verziji. Moze da se desi da neka biblioteka sa sobom vuce neodgovarajucu verziju, tada se ona iskljuci a eksplicitno u zavisnostima navede odgovarajuca biblioteka sa zeljenom verzijom. najkorisniji link za ovaj korak - http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
  2. napravi se struktura foldera koju maven zahteva i klase i ostali resursi rasporede po tim folderima u skladu sa njihovim funkcijama (generalno src folder se deli na main i test celine, koje se obe dele na java, resources i ako je potrebno webapp folder). Po pravilu se u java folderima nalaze iskljucivo java klase, a u resources folderima sve ostalo (XML, XSD, JPG, properties, itd.) Test klase za JUnit idu u src/test/java, da bi se prilikom pakovanja automatski pozvali svi testovi.
  3. cela ova struktura se testira pokretanjem mvn clean compile package iz komandne linije sa ciljem da sve radi, tj. da nas obraduje poruka BUILD SUCCESFUL.
  4. na kraju se nad aktuelnim projektom iskoristi eclipse komanda (dodaje je m2eclipse u kontekstni meni) Enable Dependency Management, i proba clean/build iz eclipse-a.
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox