Jar s Maven BOM

1. Prehľad

V tomto rýchlom výučbe sa pozrieme na to, ako môže Maven, nástroj založený na koncepcii modelu projektových objektov (POM), využiť kusovník alebo „kusovník“.

Viac podrobností o Mavene nájdete v našom článku Výukový program Apache Maven.

2. Koncepty riadenia závislostí

Aby sme pochopili, čo je kusovník a na čo ho môžeme použiť, musíme sa najskôr naučiť základné pojmy.

2.1. Čo je Maven POM?

Maven POM je súbor XML, ktorý obsahuje informácie a konfigurácie (o projekte), ktoré používa Maven na import závislostí a na zostavenie projektu.

2.2. Čo je Maven BOM?

BOM je skratka pre Bill Of Materials. Kusovník je špeciálny druh POM, ktorý sa používa na riadenie verzií závislostí projektu a poskytuje centrálne miesto na definovanie a aktualizáciu týchto verzií.

Kusovník poskytuje flexibilitu na pridanie závislosti do nášho modulu bez obáv z verzie, od ktorej by sme mali závisieť.

2.3. Tranzitívne závislosti

Maven môže objaviť knižnice, ktoré sú potrebné pre naše vlastné závislosti v našom pom.xml a zahrnie ich automaticky. Počet úrovní závislostí, z ktorých sa knižnice zhromažďujú, nie je nijako obmedzený.

Konflikt tu nastane, keď dve závislosti odkazujú na rôzne verzie konkrétneho artefaktu. Ktorý z nich zahrnie Maven?

Odpoveď je tu „najbližšia definícia“. To znamená, že použitá verzia bude najbližšie nášmu projektu v strome závislostí. Toto sa nazýva sprostredkovanie závislostí.

Pozrime sa na nasledujúci príklad na objasnenie sprostredkovania závislostí:

A -> B -> C -> D 1,4 a A -> E -> D 1,0

Tento príklad ukazuje tento projekt A záleží na B a E.B a E majú svoje vlastné závislosti, ktoré sa stretávajú s rôznymi verziami D artefakt. Artefakt D 1.0 bude použitý pri zostavovaní A projekt, pretože cesta cez E je kratšia.

Existujú rôzne techniky na určenie, ktorá verzia artefaktov by mala byť zahrnutá:

  • Verziu môžeme kedykoľvek zaručiť výslovným vyhlásením v POM nášho projektu. Napríklad zaručiť to D 1.4, mali by sme ho pridať výslovne ako závislosť v pom.xml spis.
  • Môžeme použiť Správa závislostí časť na ovládanie verzií artefaktov, ako si vysvetlíme ďalej v tomto článku.

2.4. Správa závislostí

Zjednodušene povedané, správa závislostí je mechanizmus na centralizáciu informácií o závislosti.

Keď máme skupinu projektov, ktoré dedia spoločného rodiča, môžeme vložiť všetky informácie o závislosti do zdieľaného súboru POM s názvom BOM.

Nasleduje príklad toho, ako zapísať súbor kusovníka:

 4.0.0 baeldung Baeldung-BOM 0,0,1-SNAPSHOT pom BaelDung-BOM test rodičovského pom a 1,2 test b 1,0 test kompilácie c 1,0 kompilácia 

Ako vidíme, kusovník je normálny súbor POM s a dependencyManagement časť, kde môžeme zahrnúť všetky informácie a verzie artefaktu.

2.5. Používanie súboru kusovníka

Existujú dva spôsoby, ako použiť predchádzajúci súbor kusovníka v našom projekte, a potom budeme pripravení deklarovať naše závislosti bez obáv z čísel verzií.

Môžeme dediť po rodičovi:

 4.0.0 baeldungový test 0,0,1-SNAPSHOT pom Testovací baeldung Baeldung-BOM 0,0,1-SNAPSHOT 

Ako vidíme náš projekt, Test zdedil Baeldung-BOM.

Môžeme tiež importovať kusovník.

Vo väčších projektoch nie je prístup dedenia efektívny, pretože projekt môže dediť iba jedného rodiča. Alternatívou je import, pretože môžeme importovať toľko kusovníkov, koľko potrebujeme.

Pozrime sa, ako môžeme importovať súbor kusovníka do nášho projektu POM:

 4.0.0 test Baeldung 0,0.1-SNAPSHOT pom Test testu Baeldung Baeldung-BOM 0,0,1-SNAPSHOT pom import 

2.6. Prepísanie závislosti kusovníka

Poradie prednosti verzie artefaktu je:

  1. Verzia priamej deklarácie artefaktu v našom projekte pom
  2. Verzia artefaktu v nadradenom projekte
  3. Verzia v importovanom pom, berúc do úvahy poradie importovania súborov
  4. sprostredkovanie závislostí
  • Verziu artefaktu môžeme prepísať výslovným definovaním artefaktu v pome nášho projektu požadovanou verziou
  • Ak je rovnaký artefakt definovaný s rôznymi verziami v 2 importovaných kusovníkoch, potom vyhrá verzia v súbore kusovníka, ktorá bola deklarovaná ako prvá.

3. Jarný kusovník

Možno zistíme, že knižnica tretej strany alebo iný jarný projekt priťahuje prechodnú závislosť na staršie vydanie. Ak zabudneme výslovne deklarovať priamu závislosť, môžu nastať neočakávané problémy.

Na prekonanie týchto problémov podporuje Maven koncept závislosti na kusovníku.

Môžeme importovať pružinový rám-bom v našom dependencyManagement oddiel, aby ste sa uistili, že všetky jarné závislosti sú v rovnakej verzii:

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

Nie je potrebné špecifikovať verzia atribút, keď použijeme artefakty Spring, ako v nasledujúcom príklade:

  org.springframework jarny-kontext org.springframework jarny-web 

4. Záver

V tomto rýchlom článku sme si ukázali koncepciu Maven Bill-Of-Material Concept a spôsob centralizácie informácií a verzií artefaktu do spoločného POM.

Jednoducho povedané, potom ho môžeme dediť alebo importovať, aby sme využili výhody kusovníka.

Príklady kódov v článku nájdete na GitHub.


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