Proljeće s Maven BOM

1. Pregled

U ovom ćemo brzom vodiču pogledati kako Maven, alat zasnovan na konceptu projektnog objektnog modela (POM), može koristiti BOM ili "Bill of Materials".

Za više detalja o Mavenu možete provjeriti naš članak Vodič za Apache Maven.

2. Koncepti upravljanja ovisnostima

Da bismo razumjeli što je specifikacija cilja i za što ga možemo koristiti, prvo moramo naučiti osnovne pojmove.

2.1. Što je Maven POM?

Maven POM je XML datoteka koja sadrži informacije i konfiguracije (o projektu) koje Maven koristi za uvoz ovisnosti i izgradnju projekta.

2.2. Što je Maven BOM?

BOM je skraćenica od Bill of Materials. BOM je posebna vrsta POM-a koji se koristi za kontrolu verzija ovisnosti projekta i pruža središnje mjesto za definiranje i ažuriranje tih verzija.

BOM pruža fleksibilnost za dodavanje ovisnosti našem modulu bez brige o verziji o kojoj bismo trebali ovisiti.

2.3. Prijelazne ovisnosti

Maven može otkriti knjižnice koje su potrebne našim vlastitim ovisnostima u našoj pom.xml i uključuje ih automatski. Ne postoji ograničenje broja razina ovisnosti s kojih su knjižnice prikupljene.

Ovdje dolazi do sukoba kada se 2 ovisnosti odnose na različite verzije određenog artefakta. Koji će Maven uključiti?

Ovdje je odgovor "najbliža definicija". To znači da će korištena verzija biti najbliža našem projektu na stablu ovisnosti. To se naziva medijacijom ovisnosti.

Pogledajmo sljedeći primjer da bismo pojasnili posredovanje ovisnosti:

A -> B -> C -> D 1.4 i A -> E -> D 1.0

Ovaj primjer pokazuje taj projekt A ovisi o B i E.B i E imaju vlastite ovisnosti koje se susreću s različitim verzijama D artefakt. Artefakt D 1.0 će se koristiti u izradi A projekt jer je put kroz E je kraća.

Postoje različite tehnike za utvrđivanje koju verziju artefakata treba uključiti:

  • Uvijek možemo garantirati verziju izričitim deklariranjem u POM-u našeg projekta. Primjerice, da to jamčim D 1.4 koristi se, trebali bismo ga izričito dodati kao ovisnost u pom.xml datoteka.
  • Možemo koristiti Upravljanje ovisnostima odjeljak za kontrolu verzija artefakata, kao što ćemo objasniti kasnije u ovom članku.

2.4. Upravljanje ovisnostima

Jednostavno rečeno, upravljanje ovisnostima je mehanizam za centraliziranje informacija o ovisnosti.

Kada imamo skup projekata koji nasljeđuju zajedničkog roditelja, možemo sve informacije o ovisnosti staviti u zajedničku POM datoteku koja se naziva BOM.

Slijedi primjer kako napisati BOM datoteku:

 4.0.0 baeldung Baeldung-BOM 0.0.1-SNAPSHOT pom BaelDung-BOM roditelj pom test a 1.2 test b 1.0 test kompajliranja c 1.0 compile 

Kao što vidimo, BOM je normalna POM datoteka s ovisnostUpravljanje odjeljak u koji možemo uključiti sve podatke o artefaktu i njegove verzije.

2.5. Korištenje BOM datoteke

Postoje dva načina za upotrebu prethodne BOM datoteke u našem projektu, a zatim ćemo biti spremni izjaviti svoje ovisnosti bez brige o brojevima verzija.

Od roditelja možemo naslijediti:

 4.0.0 baeldung test 0.0.1-SNAPSHOT pom Test baeldung Baeldung-BOM 0.0.1-SNAPSHOT 

Kao što vidimo, naš projekt Test nasljeđuje Baeldung-BOM.

Također možemo uvesti BOM.

U većim projektima pristup nasljeđivanju nije učinkovit jer projekt može naslijediti samo jednog roditelja. Uvoz je alternativa jer možemo uvesti onoliko specifikacija kako nam treba.

Pogledajmo kako možemo uvesti BOM datoteku u naš projekt POM:

 4.0.0 baeldung test 0.0.1-SNAPSHOT pom Test baeldung Baeldung-BOM 0.0.1-SNAPSHOT pom import 

2.6. Prepisivanje ovisnosti o BOM-u

Redoslijed prednosti verzije artefakta je:

  1. Verzija izravne deklaracije artefakta u našem projektu pom
  2. Verzija artefakta u nadređenom projektu
  3. Verzija u uvezenom pom, uzimajući u obzir redoslijed uvoza datoteka
  4. posredovanje ovisnosti
  • Verziju artefakta možemo prepisati eksplicitnim definiranjem artefakta u pomu našeg projekta sa željenom verzijom
  • Ako je isti artefakt definiran s različitim verzijama u 2 uvezena BOM-a, tada će pobijediti verzija u BOM datoteci koja je prva proglašena

3. Proljetni BOM

Možda ćemo otkriti da biblioteka treće strane ili neki drugi proljetni projekt povlači prijelaznu ovisnost o starijoj verziji. Ako zaboravimo izričito proglasiti izravnu ovisnost, mogu se pojaviti neočekivani problemi.

Da bi prevladao takve probleme, Maven podržava koncept ovisnosti o specifikacijama.

Možemo uvesti proljeće-okvir-bom u našem ovisnostUpravljanje odjeljak kako bi se osiguralo da su sve ovisnosti o Springu u istoj verziji:

   org.springframework spring-framework-bom 4.3.8.OSLOBODA pom import 

Ne trebamo navesti verzija atribut kada koristimo artefakte Spring kao u sljedećem primjeru:

  org.springframework proljeće-kontekst org.springframework proljeće-web 

4. Zaključak

U ovom kratkom članku pokazali smo koncept Maven-a o materijalima i kako centralizirati podatke i verzije artefakta u zajedničkom POM-u.

Jednostavno rečeno, tada ga možemo ili naslijediti ili uvesti kako bismo iskoristili BOM pogodnosti.

Primjeri koda u članku mogu se naći na GitHubu.


$config[zx-auto] not found$config[zx-overlay] not found