Jak Maven řeší tranzitivní závislosti z repozitářů
Publikováno:
Aktualizováno:
Články › Jak Maven řeší tranzitivní závislosti z repozitářů
Stav v roce 2026 a bezpečné použití
Závěr: Maven nehledá soubory JAR jen podle názvu. Vyřeší deklarované souřadnice, stáhne POM artefaktu, projde v něm popsané závislosti, uplatní pravidla scope a optional a vybere verzi, pokud různé cesty požadují různé verze.
Co se dozvíte
- Jak se místní, centrální, zrcadlová a soukromá úložiště podílejí na řešení.
- Proč POM závislosti – nikoli samotný JAR – popisuje většinu přechodných požadavků.
- Jak před přepsáním verze zkontrolovat skutečný graf závislostí.
Pro koho je článek určen: Uživatelům Mavenu, kteří chtějí pochopit, odkud pocházejí stažené artefakty a proč se objevují další knihovny.
Aktuální stav v roce 2026: Starší souřadnice POI Apache níže zůstávají užitečné jako historický příklad, nikoli jako doporučení verze. Používejte aktuálně podporované závislosti, důvěryhodná úložiště HTTPS, ovládací prvky kontrolního součtu/podpisu, pokud jsou k dispozici, a zásady aktualizace závislostí.
Bezpečnostní poznámka: Příkazy a konfigurační příklady z původního článku nebyly znovu spuštěny v současném produkčním prostředí. Před nasazením ověřte podporované verze, vytvořte zálohu a připravte postup návratu v odděleném testovacím prostředí.
Oficiální zdroje
Přehled
Maven automaticky stahuje soubory JAR z internetu, ale následující část vysvětluje, jak to přesně funguje.
Předpokladem tohoto článku je, že musíte pochopit, co je Maven, takže pokud nejste obeznámeni se samotným Mavenem, měli byste se také podívat na následující článek.
Obsah
1. Schopnost nástroje Maven řešit závislosti knihoven jar.
Maven může automaticky načíst soubory JAR pouhým definováním požadovaných souborů jar v souboru pom.xml. Automaticky se také naučí tranzitivní závislosti potřebné ke spuštění daného souboru JAR. Následující část vysvětluje, jak to funguje.
1-1. Co zahrnout do souboru pom.xml.
Nejprve je třeba vyřešit závislost knihovny JAR, informace jsou uvedeny v souboru pom.xml. Maven zpracovává informace ze souboru pom.xml. Pokud je vyžadován například soubor "poi-3.17.jar", je popsán v souboru pom.xml takto. (Mimochodem, 'poi-3.17.jar' je jar používaný pro manipulaci se soubory Microsoft Office, jako je například Excel).
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
Pouhým uvedením výše uvedeného se z Internetu stáhne soubor "poi-3.17.jar" a také se z Internetu stáhne doprovodný soubor JAR, který je nutný ke spuštění souboru "poi-3.17.jar".
1-2. Jak se stahují z internetu?
Jednoduché vysvětlení systému je znázorněno na následujícím obrázku.
Stahujte z repozitářů Maven dostupných na internetu. Pokud není nastaveno nic, je výchozí hodnotou Centrální úložiště. Adresa URL je následující.
https://repo1.maven.org/maven2/
Pokud máte zájem, seznam úložišť dostupných na internetu naleznete na následující webové stránce.
https://mvnrepository.com/repos
Poprvé je jar načten z externího úložiště, ale od druhého načtení je zkopírován do místního úložiště a není načten. Umístění místního úložiště je "C:\Users\user\.m2".
Pokud chcete změnit cílové umístění oproti výchozí hodnotě, můžete jej změnit také tak, že do souboru pom.xml vložíte následující značku úložiště.
<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. Mechanismy pro řešení závislostí stahovaného souboru JAR.
Právě jsme popsali příklad získání 'poi-3.17.jar', ale 'poi-3.17.jar' vyžaduje ke spuštění 'commons-collections4-4.1.jar'. To znamená, že 'poi-3.17.jar' závisí na 'commons-collections4-4.1.jar'. Mechanismus pro řešení této závislosti lze nalézt v úložišti Maven, kde je uložen soubor 'poi-3.17.jar'. Adresa URL je následující.
https://repo1.maven.org/maven2/org/apache/poi/poi/3.17/
Myslím, že je uložen soubor "poi-3.17.pom" a v tomto souboru najdete informaci, že "poi-3.17.jar" závisí na "commons-collections4-4.1.jar". To znamená, že při načítání souboru 'poi-3.17.jar' systém načte nejen soubor JAR, ale také soubor pom a zkontroluje další potřebné soubory JAR.
2. shrnutí
Mechanismus Mavenu pro řešení závislostí na knihovnách jar spočívá v tom, že závislosti jsou definovány v souboru pom, kde jsou uloženy soubory JAR, které se mají načíst.
Tím jsou shrnuty hlavní kroky a omezení, která je třeba zohlednit.
