Tavasz Maven BOM-mal

1. Áttekintés

Ebben a gyors bemutatóban megvizsgáljuk, hogy a Maven, a Project Object Model (POM) koncepcióján alapuló eszköz hogyan tudja használni a BOM-ot vagy a „Bill Of Materials” -ot.

A Mavenről további részleteket az Apache Maven bemutató című cikkünkben talál.

2. Függőségkezelési koncepciók

Ahhoz, hogy megértsük, mi az a BOM, és mire tudjuk használni, először meg kell tanulnunk az alapfogalmakat.

2.1. Mi az a Maven POM?

A Maven POM egy XML fájl, amely információkat és konfigurációkat tartalmaz (a projektről), amelyeket a Maven függőségek importálására és a projekt felépítésére használ.

2.2. Mi az a Maven BOM?

A BOM a Bill Of Materials rövidítése. A BOM egy speciális típusú POM, amely a projekt függőségeinek verzióit vezérli, és központi helyet biztosít ezeknek a verzióknak a meghatározásához és frissítéséhez.

A BOM rugalmasságot biztosít a függőség hozzáadásához a modulunkhoz anélkül, hogy aggódnánk a verziótól, amelytől függenünk kell.

2.3. Tranzitív függőségek

Maven felfedezheti azokat a könyvtárakat, amelyekre saját függőségeinknek szüksége van pom.xml és automatikusan felveszi őket. A könyvtárak összegyűjtésének függőségi szintjeinek száma nincs korlátozva.

A konfliktus akkor következik be, amikor 2 függőség egy adott műtárgy különböző verzióira utal. Melyiket foglalja bele Maven?

A válasz itt a „legközelebbi meghatározás”. Ez azt jelenti, hogy a használt verzió lesz a legközelebb a projektünkhöz a függőségek fájában. Ezt függőségi mediációnak nevezzük.

Lássuk a következő példát a függőségi közvetítés tisztázására:

A -> B -> C -> D 1,4 és A -> E -> D 1,0

Ez a példa azt a projektet mutatja be A attól függ B és E.B és E saját függőségeik vannak, amelyek a D műalkotás. Műalkotás D A 1.0 összeállítása a A projekt, mert az utat E rövidebb.

Különböző technikák léteznek annak meghatározásához, hogy a műtárgyak melyik verziót tartalmazzák:

  • Mindig garantálhatunk egy verziót, ha azt kifejezetten a projektünk POM-ban deklaráljuk. Például annak garantálása érdekében D Az 1.4-et használjuk, azt kifejezetten hozzá kell adnunk függőségként a pom.xml fájl.
  • Használhatjuk a Függőségkezelés szakasz az artefakt verziók vezérléséhez, amint ezt a cikk későbbi részében elmagyarázzuk.

2.4. Függőségkezelés

Egyszerűen fogalmazva, a Dependency Management egy mechanizmus a függőségi információk központosítására.

Ha van olyan projektkészletünk, amely közös szülőt örököl, akkor az összes függőségi információt elhelyezhetjük egy BOM nevű megosztott POM fájlban.

Az alábbiakban bemutatunk egy példát a BOM fájl írására:

 4.0.0 baeldung Baeldung-BOM 0.0.1-SNAPSHOT pom BaelDung-BOM szülő pom teszt a 1.2 teszt b 1.0 fordítási teszt c 1.0 fordítás 

Mint láthatjuk, a BOM egy normális POM fájl, amelynek a függőségMenedzsment szakasz, ahol a műtárgy összes információját és verzióját felvehetjük.

2.5. A BOM fájl használata

Az előző BOM fájl felhasználásának két módja van projektünkben, és akkor készen állunk arra, hogy deklaráljuk a függőségünket anélkül, hogy aggódnunk kellene a verziószámok miatt.

Örökölhetünk a szülőtől:

 4.0.0 baeldung teszt 0.0.1-SNAPSHOT pom teszt baeldung Baeldung-BOM 0.0.1-SNAPSHOT 

Mint láthatjuk, a Test projekt örökli a Baeldung-BOM-ot.

Importálhatjuk a BOM-ot is.

Nagyobb projektekben az öröklés megközelítése nem hatékony, mert a projekt csak egyetlen szülőt örökölhet. Az importálás az alternatíva, mivel annyi BOM-ot importálhatunk, ahányra szükségünk van.

Nézzük meg, hogyan importálhatunk egy BOM fájlt a POM projektünkbe:

 4.0.0 baeldung teszt 0.0.1-SNAPSHOT pom teszt baeldung Baeldung-BOM 0.0.1-SNAPSHOT pom import 

2.6. A BOM-függőség felülírása

A műtárgy verziójának fontossági sorrendje:

  1. A műtárgy közvetlen nyilatkozatának változata projektünkben pom
  2. A műtárgy verziója az anyaprojektben
  3. Az importált csomag verziója, figyelembe véve a fájlok importálásának sorrendjét
  4. függőségi közvetítés
  • Felülírhatjuk az artefaktum verzióját, ha a projektünk pom-jában kifejezetten meghatározzuk az artefaktumot a kívánt verzióval
  • Ha ugyanazt a műterméket különböző verziókkal definiálják 2 importált BOM-ban, akkor a BOM fájlban az elsőnek deklarált verzió nyer

3. Tavaszi BOM

Megállapíthatjuk, hogy egy harmadik féltől származó könyvtár vagy egy másik tavaszi projekt transzitív függőséget vált ki egy régebbi kiadástól. Ha elfelejtjük kimondani a közvetlen függőséget, váratlan problémák merülhetnek fel.

Az ilyen problémák leküzdésére Maven támogatja a BOM-függőség fogalmát.

Importálhatjuk a tavaszi keret-bom miénkben függőségMenedzsment szakasz annak biztosítására, hogy az összes tavaszi függőség ugyanaz legyen:

   org.springframework spring-framework-bom 4.3.8.KÖZLEMÉNY pom import 

Nem kell megadnunk a változat attribútumot, amikor a tavaszi tárgyakat használjuk, a következő példában leírtak szerint:

  org.springframework tavaszi kontextus org.springframework tavaszi-web 

4. Következtetés

Ebben a gyors cikkben bemutattuk a Maven Bill-Of-Material Concept-et és azt, hogy hogyan lehet központosítani az artefaktum adatait és verzióit egy közös POM-ban.

Egyszerűen fogalmazva, akkor akár örökölhetjük, akár importálhatjuk, hogy felhasználjuk a BOM előnyeit.

A cikk kódpéldái a GitHub oldalon találhatók.


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