Kā Maven atrisina transitatīvās atkarības no repozitorijiem


Publikācijas datums:

Atjaunināts:


Tehniskie raksti > Kā Maven atrisina transitatīvās atkarības no repozitorijiem

2026. gada statuss un droša lietošana

Secinājums: Maven nemeklē JAR failus pēc to nosaukumiem. Tas atrisina POM deklarētās koordinātas, lejupielādē artefakta POM, seko piemērojamām tranzitīvajām atkarībām un saskaņo versijas, ja dažādi ceļi pieprasa vienu artefaktu.

Ko jūs uzzināsiet

  • Kā atkarību atrisināšanā piedalās lokālais, centrālais, mirror un privātais repozitorijs.
  • Kāpēc tranzitīvās atkarības apraksta artefakta POM, nevis pats JAR fails.
  • Kā pirms versijas maiņas pārbaudīt galīgo atkarību grafu.

Kam tas paredzēts: Maven lietotāji, kuri vēlas saprast, no kurienes nāk lejupielādētie artefakti un kāpēc tiek parādītas papildu bibliotēkas.

2026. gada konteksts: tālāk norādītās vecākās Apache POI koordinātas joprojām ir noderīgas kā vēsturisks piemērs, nevis versijas ieteikums. Izmantojiet pašreizējās atbalstītās atkarības, uzticamas HTTPS krātuves, kontrolsummas/paraksta vadīklas, ja tādas ir pieejamas, un atkarības atjaunināšanas politiku.

Drošības piezīme. Sākotnējā rakstā esošās komandas un konfigurācijas piemēri nav atkārtoti izpildīti pašreizējā ražošanas vidē. Pirms to lietošanas pārbaudiet atbalstītās versijas, dublējumus, piekļuves vadīklas un atcelšanas darbības atsevišķā testa vidē.

Galvenie oficiālie avoti

Pārskats

Maven automātiski lejupielādē artefaktus no attāliem repozitorijiem. Rakstā ir izskaidrots, kādu informāciju tas nolasa un kā izveido atkarību grafu.

Ja Maven vēl nav pazīstams, vispirms izlasiet vispārīgo ievadu:

Kas ir Maven un ko Maven dara?

Satura rādītājs

  1. Kā Maven atrisina JAR atkarības
  2. Kopsavilkums

1. Kā Maven atrisina JAR atkarības

Kad atkarība ir deklarēta pom.xml, Maven sasaista tās koordinātas ar artefaktu, nolasa artefakta POM un atrisina piemērojamās tranzitīvās atkarības.

1-1. Koordinātu deklarēšana pom.xml

Atkarību nosaka groupId, artifactId un version. Tālāk redzamais vēsturiskais piemērs pieprasa Apache POI 3.17 bibliotēku Microsoft Office dokumentu formātu apstrādei.

pom.xml


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

Izmantojot šo deklarāciju, Maven lejupielādē poi-3.17.jar un tā POM norādītās tranzitīvās atkarības.

1-2. Attālais un lokālais repozitorijs

Diagramma parāda, kur Maven meklē artefaktus un kur tos saglabā.

Maven repozitorijs.

Ja papildu repozitorijs nav konfigurēts, Maven artefaktus meklē Maven Central:

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

Citu publisku repozitoriju sarakstu var apskatīt šajā katalogā:

https://mvnrepository.com/repos

Pirmajā reizē lejupielādētais artefakts tiek saglabāts lokālajā repozitorijā. Turpmākie build procesi var izmantot šo kopiju. Windows sistēmā lokālais repozitorijs parasti atrodas lietotāja.m2 direktorijā.

Ja vajadzīgs papildu attālais repozitorijs, pom.xml var pievienot tālāk redzamo definīciju. Organizācijas mirror un piekļuves datus parasti labāk centralizēt settings.xml.

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. Tranzitīvo atkarību atrisināšana

Šajā piemērā poi-3.17.jar ir vajadzīgs commons-collections4-4.1.jar. Maven šo saistību nenosaka pēc failu nosaukumiem; tas nolasa kopā ar artefaktu repozitorijā publicēto POM metadata. Attiecīgā laidiena katalogs:

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

poi-3.17.pom norāda commons-collections4 atkarību. Maven lejupielādē POM, pievieno vajadzīgos artefaktus grafam un atkārto procesu piemērojamām tranzitīvajām atkarībām.

2. Kopsavilkums

Maven sasaista pom.xml koordinātas ar repozitorijos publicētajiem artefaktiem un POM metadata, seko tranzitīvajām atkarībām un saglabā lejupielādētos failus lokālajā repozitorijā.