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
  2. Santrauka

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.

pom.xml


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

Maven priklausomybių atsisiuntimo iš nuotolinės saugyklos į vietinę .m2 saugyklą schema

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.

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