100% au considerat acest document util (1 vot)
78 vizualizări3 pagini

Maven

Încărcat de

Daniela Marilena
Drepturi de autor
© Attribution Non-Commercial (BY-NC)
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
100% au considerat acest document util (1 vot)
78 vizualizări3 pagini

Maven

Încărcat de

Daniela Marilena
Drepturi de autor
© Attribution Non-Commercial (BY-NC)
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd

Capitolul 1.

Maven

Maven este un sistem de construire i management al proiectelor, scris n Java. Face parte din proiectele g zduite de Apache Software Foundation. Este un tool open source (instrument cu codul surs deschis) care este pe larg utilizat att de majoritatea proiectelor Java Open Source, ct i de altele. Ce este Maven? Cea mai mare parte a utilizatorilor Maven vor spune c Maven este un instrument pentru build, n timp ce defini ia de pe pagina oficial a proiectului Apache Maven [Link] spune c Maven este un instrument pentru management al proiectelor. Un instrument pentru build se axeaz n principal pe preprocesare, compilare, ambalare (packaging), testare i distribu ie. Un instrument pentru management, cum ar fi Maven, n plus fa de capacit ile de build pe care le are, i care sunt cu mult mai simple i u oare n folosire, mai prevede de asemenea i un ciclu de via al proiectului, un sistem de management al dependen elor, poate rula rapoarte, genera o pagin web a proiectului, faciliteaz comunicarea ntre membrii echipei de lucru prin oferirea unei interfe e comune, i multe alte facilit i. Mai jos sunt enumerate principiile de baz pe care le prevede Maven:
y

Conven ia n favoarea Configura iei (Convention over Configuration) Conven ia n favoarea configura iei este un concept foarte simplu. Sistemele, bibliotecile i framework-urile trebuie s defineasc valori implicite rezonabile. F r a necesita configurare inutil , sistemele ar trebui simplu s lucreze. Maven include acest concept prin furnizarea unor set ri implicite pentru proiecte. F r nici o personalizare i configurare, codul surs se presupune a fi n: src/main/java i a resurselor n: src/main/resources. Testele se presupun a fi n: src/test i proiectul se asum s produc un fi ier JAR. Maven presupune c se dore te ca bytecodul s fie compilat n target/classes i apoi s se creeze un fi ier JAR repartizabil (distributable) n target. Maven aplic un set comun de conven ii pentru compilarea codului surs , ambalarea fi ierelor pentru repartizare, generarea de pagini web, i multe alte procese. Dac se urmeaz conven iile, Maven va necesita un efort minim, aproape de zero - doar plasa i sursele n directoarele corecte i Maven va avea grij de restul. O interfa comun - nainte ca Maven s propun o interfa unic pentru a face build la produsele software, fiecare proiect avea sistemul s u propriu de build. Fiecare developer care dorea s fac build la proiect trebuia s se ntrebe un ir de ntreb ri. Ce va produce build-ul? De ce biblioteci i libr rii am nevoie? De unde s le descarc? Unde trebuie s le pun? Ce comand sau goal (scop) trebuie s rulez? Developerii aveau nevoie de ceva timp ca s nve e cum s fac build la un proiect sau altul. n prezent ns , atunci cnd vedem c un proiect folose te Maven, putem presupune c vom putea far mari probleme s descarc m sursele i s -i facem build cu mvn install. Abordare declarativ - Totul n Maven se face ntr-un mod declarativ folosind Project Object Model (POM) (modelul obiect al proiectului). Noi nu doar compil m codul surs , ci cre m o descriere a proiectului i atributelor acestuia, n acela i timp alocndu-i proiectului un set unic de coordonate. Care este licen a proiectului? Cine

dezvolt i contribuie la acest proiect? Care snt proiectele de care depinde acest proiect? Tot ce trebuie de f cut este de creat fi ierul [Link] cu descrierea proiectului i de pus sursele n directoarele predefinite. Maven va avea grij de restul.
y

Refolosirea logicii de build - Maven a abstractizat sarcinile comune de build n plugin-uri, care sunt men inute centralizat i share-uite (mp r ite, mp rt ite) universal c tre to i. Nucleul Maven este destul de simplu i limitat. El nu tie altceva dect s parse-ze (analizeze) cteva documente XML i s men in cteva cicluri de via a proiectului i cteva plugin-uri. Maven a fost creat astfel nct s delege marea responsabilitate c tre un set de plugin-uri Maven. Cea mai mare parte a ac iunilor n Maven se ntmpl n plugin-uri, care se ocup de lucruri ca compilarea codului surs , ambalarea bytecode-ului, publicarea paginilor web, precum i orice alt activitate de care este nevoie ntr-un build.

Deci, pentru a r spunde la ntrebarea ini ial : Maven este un set de standarde i o abordare specific n dezvoltarea proiectelor software. Maven este un instrument foarte capabil, care poate fi n acela i timp simplu sau complex, n dependen de ce este nevoie. Din acest motiv, de cele mai multe ori exist mai multe moduri pentru a realiza aceea i sarcin .

Dependen e Tranzitive
O dependen tranzitiv este o dependen de c tre o alt dependen . Dac un proiect A depinde de un alt proiect B, care la rndul s u depinde de proiectul C, atunci proiectul C este considerat o dependen tranzitiv a proiectului A. Dac proiectul C depinde la rndul s u de proiectul D, atunci i proiectul D de asemenea este considerat o dependen tranzitiv a proiectului A.

Maven poate gestiona dependen ele tranzitive i scuti developer-ul de necesitatea de a g si toate dependen ele necesare pentru a compila i rula o aplica ie. Pute i doar s declara i o dependen de vre-un framework sau bibliotec f r s v face i griji pentru depistarea tuturor dependen elor pe care acestea le au. Maven realizeaz acest lucru prin construirea unui graf de dependen e i rezolvarea tuturor conflictelor i suprapunerilor care ar putea ap rea. De exemplu, dac Maven g se te dou proiecte care depind de acelea i groupId i artifactId, acesta va selecta n mod automat care dependen s o foloseasc , ntotdeauna favoriznd cea mai recent versiune a dependen ei. De i sun convenabil, exist unele cazuri n care dependen ele tranzitive pot cauza unele probleme de configurare. n astfel de scenarii, pute i utiliza excluderea de dependen e. Mai jos este ar tat un exemplu n care se adaug o dependen de proiectul A, dar se exclude dependen a tranzitiv de proiectul B i se nlocuie te cu o dependen de proiectul X:
01.<dependencies> 02. <dependency> 03. <groupId>[Link]</groupId> 04. <artifactId>project-a</artifactId> 05. <version>1.0</version> 06. <exclusions> 07. <exclusion> 08. <groupId>[Link]</groupId> 09. <artifactId>project-b</artifactId> 10. </exclusion> 11. </exclusions> 12. </dependency> 13. <dependency> 14. <groupId>[Link]</groupId> 15. <artifactId>project-x</artifactId> 16. <version>1.0</version> 17. </dependency> 18.</dependencies>

Dup cum pute i observa nu exist nici un semn c dependen a de proiectul X este o nlocuire. n cazul acesta proiectul X este o bibliotec care asigur acela i API ca i proiectul B. Pentru a nlocui o dependen tranzitiv cu o alt dependen , trebui s exclude i dependen a tranzitiv i s declara i o alt dependen n loc. De men ionat, c Maven nu desc rca doar fi ierul JAR al dependen ei, Maven descarc de asemenea i fi ierul POM al dependen ei. Faptul c Maven descarc fi ierele POM ad ug tor fa de artifacte i permite s suporte dependen ele tranzitive, deoarece Maven consult POMurile dependen elor pentru a g si oricare alte dependen e tranzitive. Aceste dependen e tranzitive snt apoi adaugate ca dependen e a proiectului curent.

S-ar putea să vă placă și