Kā Maven no repozitorijiem atrisina tranzitīvās atkarības
Publikācijas datums:
Atjaunināts:
Tehniskie raksti > Kā Maven no repozitorijiem atrisina tranzitīvās atkarības
2026. gada statuss un droša lietošana
Secinājums: Maven nemeklē JAR failus pēc to nosaukumiem. Tas atrisina deklarētās koordinātas, lejupielādē artefakta POM, seko tajā norādītajām atkarībām, piemēro tvēruma un izvēles noteikumus 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, Maven Central, spoguļrepozitorijs un privātais repozitorijs.
- Kāpēc lielāko daļu tranzitīvo atkarību apraksta artefakta POM, nevis pats JAR fails.
- Kā pirms versijas maiņas pārbaudīt faktiski atrisināto atkarību grafu.
Kam tas paredzēts: Maven lietotājiem, 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 ir tikai vēsturisks piemērs, nevis versijas ieteikums. Izmantojiet aktuālas atbalstītas atkarību versijas, uzticamus HTTPS repozitorijus, kontrolsummu vai parakstu pārbaudi, ja tā ir pieejama, un noteiktu atkarību atjaunināšanas kārtību.
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 lejupielādē JAR failus no attāliem repozitorijiem. Šajā rakstā izskaidrots atkarību atrisināšanas process.
Plašāks ievads pieejams rakstā Kas ir Maven un ko pārvalda Maven?
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>
Maven šīs koordinātas atrisina konfigurētajos repozitorijos, lejupielādē POI artefaktu un tā POM un pēc tam atrisina POM deklarētās atkarības.
1-2. Attālais un lokālais repozitorijs
Nākamajā diagrammā parādīta repozitoriju darbplūsma.
Ja to nepārraksta iestatījumi vai spoguļrepozitorijs, Maven meklē artefaktus Maven Central vietnē https://repo1.maven.org/maven2/.
Publisko repozitoriju katalogu var apskatīt vietnē https://mvnrepository.com/repos; konfigurācijai izmantojiet oficiālo Maven dokumentāciju un tikai uzticamus avotus.
Lejupielādētie artefakti tiek saglabāti lokālajā repozitorijā — parasti %USERPROFILE%\.m2\repository Windows vidē vai ~/.m2/repository Unix tipa sistēmās. Atbilstoši repozitorija politikai Maven joprojām var sazināties ar attālo repozitoriju, lai pārbaudītu metadatus un SNAPSHOT atjauninājumus.
Projektā var deklarēt citu repozitoriju, kā parādīts tālāk, taču organizācijas mēroga spoguļrepozitorijus un piekļuves datus parasti glabā settings.xml. Izmantojiet tikai uzticamus HTTPS repozitorijus.
<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
POI 3.17 repozitorija direktorijā https://repo1.maven.org/maven2/org/apache/poi/poi/3.17/ atrodas gan poi-3.17.jar, gan poi-3.17.pom. Šis POM deklarē atkarību no commons-collections4:4.1.
Maven rekursīvi nolasa artefaktu POM, lai izveidotu atkarību grafu. Pēc tam tas piemēro tvērumus, izslēgumus, izvēles atkarību un versiju saskaņošanas noteikumus, nosakot faktisko classpath. Atrisināto rezultātu var apskatīt ar komandu mvn dependency:tree.
2. Kopsavilkums
Maven atrisina deklarētās koordinātas repozitorijos un izmanto katra artefakta POM, lai atrastu tranzitīvās atkarības. JAR failā ir izpildāmās klases un resursi, bet atkarību metadati parasti atrodas tam pievienotajā POM.
