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.

Kaj je Apache Maven?

Kazalo vsebine

  1. Kako Maven razrešuje odvisnosti
  2. Povzetek

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.

pom.xml


<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.

Diagram pretoka med lokalnim in oddaljenim repozitorijem Maven

Č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.

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. 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.