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
Išvada: Maven neieško JAR failų pagal jų pavadinimus. Ji išsprendžia POM deklaruotas koordinates, atsisiunčia artefakto POM, seka taikomas tranzityvias priklausomybes ir suderina versijas, kai skirtingi keliai reikalauja to paties artefakto.
Ką išmoksite
- Kaip priklausomybių sprendime dalyvauja vietinė, centrinė, mirror ir privati repozitorijos.
- Kodėl tranzityvios priklausomybės aprašomos artefakto POM, o ne pačiame JAR faile.
- Kaip prieš keičiant versiją patikrinti galutinį priklausomybių grafą.
Kam tai skirta: „Maven“ naudotojams, norintiems suprasti, iš kur atsiranda atsisiųsti artefaktai ir kodėl atsiranda papildomų bibliotekų.
2026 m. kontekstas: toliau pateiktos senesnės „Apache“ POI koordinatės išlieka naudingos kaip istorinis pavyzdys, o ne versijos rekomendacija. Naudokite dabartines palaikomas priklausomybes, patikimas HTTPS repozitorijas, kontrolinės sumos / parašo valdiklius, jei įmanoma, ir priklausomybės naujinimo politiką.
Saugos pastaba: pradiniame straipsnyje pateiktos komandos ir konfigūracijos pavyzdžiai nebuvo pakartotinai vykdomi dabartinėje gamybos aplinkoje. Prieš taikydami, patikrinkite palaikomas versijas, atsargines kopijas, prieigos valdiklius ir atšaukimo veiksmus atskiroje bandymo aplinkoje.
Pagrindiniai oficialūs šaltiniai
Apžvalga
Maven automatiškai atsisiunčia artefaktus iš nuotolinių repozitorijų. Šiame straipsnyje paaiškinama, kokią informaciją ji skaito ir kaip sudaro priklausomybių grafą.
Jei su Maven dar nesate susipažinę, pirmiausia perskaitykite bendrą įvadą:
Kas yra "Maven" ir ką "Maven" daro?
Turinys
1. Kaip Maven išsprendžia JAR priklausomybes
Kai priklausomybė deklaruojama pom.xml, Maven susieja jos koordinates su artefaktu, 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 ir jo 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ą. Windows sistemoje vietinė repozitorija paprastai yra naudotojo.m2 kataloge.
Jei reikia papildomos nuotolinės repozitorijos, pom.xml gali būti pateiktas toks aprašas. Organizacijos mirror ir prieigos duomenis paprastai geriau centralizuoti 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. Tranzityvių priklausomybių sprendimas
Šiame pavyzdyje poi-3.17.jar reikia commons-collections4-4.1.jar. Maven šio ryšio nenustato iš failų pavadinimų; ji perskaito kartu su artefaktu repozitorijoje paskelbtą POM metadata. Atitinkamo leidimo katalogas:
https://repo1.maven.org/maven2/org/apache/poi/poi/3.17/
poi-3.17.pom nurodo commons-collections4 priklausomybę. Maven atsisiunčia POM, įtraukia reikiamus artefaktus į grafą ir tą patį procesą pakartoja taikomoms tranzityvioms priklausomybėms.
2. Santrauka
Maven susieja pom.xml koordinates su repozitorijose esančiais artefaktais ir POM metadata, seka tranzityvias priklausomybes ir išsaugo atsisiųstus failus vietinėje repozitorijoje.
Techniniai straipsniai
Peržiūrėkite visus techninius straipsnius.
Profilis
Peržiūrėkite autoriaus profilį.
Kontaktai
