Kako Maven razrešuje prehodne odvisnosti iz repozitorijev
Datum objave:
Posodobljeno:
Tehnični članki > Kako Maven razrešuje prehodne odvisnosti iz repozitorijev
Stanje in varna uporaba v letu 2026
Bistvo: Maven ne išče poljubnih datotek JAR po imenu. Razreši navedene koordinate, prenese pripadajoči POM, sledi njegovim odvisnostim ter uporabi pravila o obsegu, izbirnosti in posredovanju različic.
Kaj boste izvedeli
- Kako pri razreševanju sodelujejo lokalni, osrednji, zrcalni in zasebni repozitoriji.
- Zakaj večino zahtev prehodnih odvisnosti opisuje POM in ne sama datoteka JAR.
- Kako pregledati dejanski graf odvisnosti in ugotoviti, zakaj je bila izbrana določena različica.
Komu je članek namenjen? Uporabnikom Mavena, ki želijo razumeti izvor prenesenih artefaktov in razlog za dodatne knjižnice v projektu.
Opomba za leto 2026: Stare koordinate Apache POI v nadaljevanju so zgodovinski primer, ne priporočilo različice. Uporabljajte trenutno podprte odvisnosti in zaupanja vredne repozitorije HTTPS, preverjajte kontrolne vsote ali podpise, kjer so na voljo, ter vzpostavite pravila za posodabljanje odvisnosti.
Varnostna opomba: Ukazi in konfiguracijski primeri iz prvotnega članka niso bili znova preizkušeni v sodobnem produkcijskem okolju. Pred uporabo v ločenem preizkusnem okolju preverite podprte različice, izdelajte varnostne kopije ter določite nadzor dostopa in postopek povrnitve.
Uradni viri
Pregled
Maven samodejno prenaša artefakte JAR iz repozitorijev. Ta članek pojasnjuje, kako poteka razreševanje.
Za lažje razumevanje je koristno najprej poznati osnovno vlogo Mavena, opisano v naslednjem članku.
Kazalo vsebine
1. Kako Maven razrešuje odvisnosti
Maven pridobi artefakte JAR, katerih koordinate so navedene v datoteki pom.xml. Iz pripadajočih datotek POM prebere tudi druge artefakte, ki jih te odvisnosti potrebujejo, in jih razreši kot prehodne odvisnosti.
1-1. Kaj navesti v datoteki pom.xml
Deklaracija neposredno odvisnost določi z vrednostmi groupId, artifactId in version. Zgodovinski primer spodaj zahteva Apache POI 3.17, knjižnico za delo z dokumenti Microsoft Office, med drugim z Excelovimi datotekami.
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
Maven te koordinate razreši v nastavljenih repozitorijih, prenese artefakt POI in njegov POM ter nato razreši odvisnosti, opisane v tem POM-u.
1-2. Kako se artefakti prenesejo iz repozitorija
Poenostavljen potek je prikazan na spodnjem diagramu.
Če nastavitve ali zrcalo tega ne preglasijo, Maven išče v repozitoriju Maven Central na naslednjem naslovu.
https://repo1.maven.org/maven2/
Naslednja zunanja stran vsebuje iskalnik artefaktov in pregled javnih repozitorijev.
https://mvnrepository.com/repos
Prenesene artefakte Maven shrani v lokalni repozitorij; v sistemu Windows je ta imenik običajno pod uporabniškim profilom v ".m2\repository". Glede na pravila repozitorija lahko še vedno preveri oddaljene metapodatke in posodobitve posnetkov.
Dodatni oddaljeni repozitorij je mogoče v datoteki pom.xml navesti z naslednjim elementom, organizacijska zrcala in poverilnice pa praviloma sodijo v settings.xml. Uporabljajte le zaupanja vredne repozitorije HTTPS.
<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. Kako se razrešijo prehodne odvisnosti
Imenik repozitorija za POI 3.17 vsebuje datoteki "poi-3.17.jar" in "poi-3.17.pom". Ta POM deklarira odvisnost s koordinatami commons-collections4:4.1.
https://repo1.maven.org/maven2/org/apache/poi/poi/3.17/
Maven rekurzivno bere POM-e artefaktov in sestavi graf odvisnosti. Nato uporabi obsege, izključitve, izbirne odvisnosti in pravila posredovanja različic, da določi efektivno razredno pot.
2. Povzetek
Maven razreši deklarirane koordinate iz repozitorijev in iz POM-a vsakega artefakta odkrije prehodne odvisnosti. Datoteka JAR vsebuje prevedene razrede in vire, podatki o odvisnostih pa so praviloma v pripadajočem POM-u.
Pri uporabi v novejšem okolju upoštevajte tudi opombe o različicah in varnosti na začetku članka.
