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