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.
Obsah
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.
<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.
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".
<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.
Technické články
Profil
Kontakt
