Maven
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:
- 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
- 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.
- 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.
- 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.