Kaip „Maven“ sprendžia tranzityvias priklausomybes iš repozitorijų
Paskelbimo data:
Atnaujinta:
Techniniai straipsniai > Kaip „Maven“ sprendžia tranzityvias priklausomybes iš repozitorijų
2026 m. būsena ir saugus naudojimas
Trumpai: „Maven“ neieško JAR failų vien pagal jų pavadinimus. Įrankis išsprendžia POM deklaruotas koordinates, atsisiunčia artefakto POM, seka taikomas tranzityvias priklausomybes ir suderina versijas, kai skirtinguose grafo keliuose prašoma to paties artefakto.
Ką išmoksite
- Kaip sprendžiant priklausomybes naudojamos vietinės, centrinės, veidrodinės ir privačios repozitorijos.
- Kodėl tranzityvios priklausomybės aprašomos artefakto POM, o ne pačiame JAR faile.
- Kaip prieš keičiant versiją patikrinti faktiškai išspręstą priklausomybių grafą.
Kam skirtas straipsnis: „Maven“ naudotojams, norintiems suprasti, iš kur gaunami artefaktai ir kodėl kartu atsisiunčiamos papildomos bibliotekos.
2026 m. kontekstas: toliau pateiktos senos „Apache POI“ koordinatės yra istorinis pavyzdys, o ne rekomenduojama versija. Naudokite palaikomas priklausomybes ir patikimas HTTPS repozitorijas, kai įmanoma tikrinkite kontrolines sumas ar parašus ir taikykite priklausomybių atnaujinimo politiką.
Saugos pastaba: pradinio straipsnio komandos ir konfigūracijos pavyzdžiai nebuvo iš naujo išbandyti dabartinėje produkcinėje aplinkoje. Prieš juos taikydami atskiroje bandymo aplinkoje patikrinkite palaikomas versijas, atsargines kopijas, prieigos kontrolę ir grįžimo prie ankstesnės būsenos veiksmus.
Pagrindiniai oficialūs šaltiniai
Apžvalga
„Maven“ automatiškai atsisiunčia artefaktus iš nuotolinių repozitorijų. Šiame straipsnyje paaiškinama, kokius metaduomenis įrankis skaito ir kaip sudaro priklausomybių grafą.
Jei su Maven dar nesate susipažinę, pirmiausia perskaitykite bendrą įvadą:
Kas yra „Maven“ ir ką šis įrankis valdo?
Turinys
1. Kaip Maven išsprendžia JAR priklausomybes
Kai priklausomybė deklaruojama pom.xml faile, „Maven“ pagal jos koordinates suranda artefaktą, perskaito jo POM ir išsprendžia taikomas tranzityvias priklausomybes.
1-1. Koordinačių deklaravimas pom.xml
Priklausomybę apibrėžia groupId, artifactId ir version. Toliau pateiktas istorinis pavyzdys nurodo Apache POI 3.17 biblioteką, skirtą Microsoft Office dokumentų formatams apdoroti.
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
Pagal šią deklaraciją „Maven“ atsisiunčia poi-3.17.jar, jo POM ir tame POM nurodytas tranzityvias priklausomybes.
1-2. Nuotolinė ir vietinė repozitorijos
Schema parodo, kur Maven ieško artefaktų ir kur juos išsaugo.
Jei papildoma repozitorija nesukonfigūruota, Maven artefaktų ieško Maven Central:
https://repo1.maven.org/maven2/
Kitų viešų repozitorijų sąrašą galima peržiūrėti šiame kataloge:
https://mvnrepository.com/repos
Pirmą kartą atsisiųstas artefaktas išsaugomas vietinėje repozitorijoje. Vėlesni build procesai gali naudoti šią kopiją, nors pagal repozitorijos politiką „Maven“ vis tiek gali kreiptis į nuotolinę repozitoriją dėl metaduomenų ar SNAPSHOT versijų naujinių.
Jei reikia papildomos nuotolinės repozitorijos, pom.xml faile galima pateikti toliau parodytą aprašą. Visai organizacijai skirtas veidrodines repozitorijas ir prisijungimo duomenis paprastai geriau centralizuoti settings.xml faile. Naudokite tik patikimas HTTPS repozitorijas.
<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. Tranzityvių priklausomybių sprendimas
Šiame pavyzdyje poi-3.17.jar reikalingas commons-collections4-4.1.jar. „Maven“ šio ryšio nenustato iš failų pavadinimų – įrankis perskaito kartu su artefaktu repozitorijoje paskelbtus POM metaduomenis. Atitinkamo leidimo katalogas:
https://repo1.maven.org/maven2/org/apache/poi/poi/3.17/
poi-3.17.pom nurodo commons-collections4 priklausomybę. „Maven“ rekursyviai skaito artefaktų POM, sudaro priklausomybių grafą ir pritaiko taikymo sričių, išskyrimų, neprivalomų priklausomybių bei versijų derinimo taisykles. Galutinį rezultatą galima patikrinti komanda mvn dependency:tree.
2. Išvada
„Maven“ pagal pom.xml deklaruotas koordinates randa artefaktus repozitorijose ir iš jų POM sužino tranzityvias priklausomybes. JAR faile yra vykdomosios klasės ir ištekliai, o priklausomybių metaduomenys paprastai pateikiami greta esančiame POM.
Techniniai straipsniai
Peržiūrėkite visus techninius straipsnius.
Profilis
Peržiūrėkite autoriaus profilį.
Kontaktai
