Ako Maven rieši tranzitívne závislosti z repozitárov


Dátum vydania:

Aktualizované:


Technické články > Ako Maven rieši tranzitívne závislosti z repozitárov

Stav 2026 a bezpečné používanie

Záver: Maven nevyhľadáva ľubovoľné súbory JAR podľa názvu. Rieši deklarované súradnice, stiahne POM artefaktu, sleduje jeho závislosti, zohľadní pravidlá rozsahu a voliteľnosti a pri rozdielnych požadovaných verziách použije pravidlá výberu závislosti.

Čo sa naučíte

  • Akú úlohu pri riešení závislostí majú lokálne, centrálne, zrkadlové a súkromné repozitáre.
  • Prečo väčšinu tranzitívnych závislostí opisuje POM artefaktu, nie samotný súbor JAR.
  • Ako skontrolovať výsledný strom závislostí pred vynútením inej verzie.

Pre koho je to určené: Pre používateľov Mavenu, ktorí chcú pochopiť, odkiaľ pochádzajú stiahnuté artefakty a prečo sa objavujú ďalšie knižnice.

Kontext v roku 2026: Staršia verzia Apache POI uvedená nižšie slúži iba ako historický príklad, nie ako odporúčaná verzia. Používajte podporované závislosti a dôveryhodné repozitáre HTTPS, podľa možností overujte kontrolné súčty alebo podpisy a stanovte pravidlá aktualizácie závislostí.

Bezpečnostná poznámka: Príkazy a príklady konfigurácie v pôvodnom článku neboli znovu spustené v aktuálnom produkčnom prostredí. Pred ich použitím overte podporované verzie, zálohy, prístupové oprávnenia a postup obnovy v oddelenom testovacom prostredí.

Hlavné oficiálne zdroje

Prehľad

Maven dokáže automaticky sťahovať artefakty JAR z repozitárov. Nasledujúce časti vysvetľujú, ako tento mechanizmus funguje.

Článok predpokladá základnú znalosť Mavenu. Ak s týmto nástrojom ešte len začínate, najprv si prečítajte nasledujúci prehľad.

Čo je Maven a čo robí?

Obsah

  1. Ako Maven rieši závislosti knižníc JAR
  2. Zhrnutie

1. Ako Maven rieši závislosti knižníc JAR

V súbore pom.xml sa deklarujú súradnice závislosti. Maven podľa nich stiahne artefakt aj jeho POM a následne vyrieši tranzitívne závislosti. Nasledujúci príklad ukazuje jednotlivé kroky.

1-1. Čo deklarovať v súbore pom.xml

Závislosť sa v pom.xml identifikuje pomocou groupId, artifactId a version. Príklad používa historickú verziu Apache POI 3.17, knižnicu na prácu so súbormi Microsoft Office, napríklad s dokumentmi Excelu.

pom.xml


<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.17</version>
</dependency>

Na základe tejto deklarácie Maven stiahne artefakt POI aj jeho POM. Z POM potom načíta ďalšie deklarované závislosti a stiahne potrebné artefakty.

1-2. Ako sa artefakty sťahujú z repozitára

Zjednodušený priebeh znázorňuje nasledujúci obrázok.

Tok artefaktov medzi vzdialeným a lokálnym repozitárom Mavenu

Maven sťahuje artefakty zo vzdialených repozitárov. Maven Central sa používa predvolene, pokiaľ mirror alebo iné nastavenie v settings.xml neurčí iný repozitár.

https://repo1.maven.org/maven2/

Nasledujúca služba tretej strany uvádza verejné repozitáre. Pred pridaním repozitára overte jeho prevádzkovateľa a používajte dôveryhodné pripojenie HTTPS.

https://mvnrepository.com/repos

Pri prvom použití sa artefakt stiahne zo vzdialeného repozitára a uloží sa do lokálneho repozitára. Pri ďalšom zostavení sa použije miestna kópia, pokiaľ pravidlá aktualizácie nevyžadujú novú kontrolu. V systéme Windows sa lokálny repozitár štandardne nachádza v "C:\Users\user\.m2\repository".

Ďalší vzdialený repozitár možno pre projekt deklarovať v pom.xml pomocou nasledujúceho prvku "repository".

pom.xml


<repositories>
    <repository>
        <id>sonatype-nexus-snapshots</id>
        <name>Sonatype Nexus Snapshots</name>
        <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
        </snapshots>
    </repository>
</repositories>

1-3. Ako Maven rieši tranzitívne závislosti

V tomto príklade deklaruje POM artefaktu POI aj závislosť od Commons Collections. Príslušné metadáta sú uložené spolu s artefaktom v repozitári Maven na nasledujúcej adrese.

https://repo1.maven.org/maven2/org/apache/poi/poi/3.17/

Repozitár obsahuje aj súbor "poi-3.17.pom", v ktorom sú deklarované súradnice závislosti Commons Collections. Maven rekurzívne číta ďalšie súbory POM a pri zostavení výsledného grafu uplatňuje scope, optional závislosti, exclusions a pravidlá výberu verzie.

2. Zhrnutie

Maven rieši deklarovaný artefakt podľa jeho súradníc a zo súboru POM v repozitári načíta tranzitívne závislosti. Súbor JAR obsahuje najmä triedy a zdroje, kým metadáta závislostí sa bežne nachádzajú v sprievodnom POM.

Stiahnuté artefakty a POM ukladá Maven do lokálneho repozitára podľa nakonfigurovaných pravidiel aktualizácie.

Pred použitím historickej verzie z príkladu vždy overte podporovanú verziu knižnice a dôveryhodnosť zdroja.