Cum rezolvă Maven dependențele tranzitive din depozite
Data publicării:
Actualizat:
INFORMATION > Cum rezolvă Maven dependențele tranzitive din depozite
Starea 2026 și utilizare în siguranță
Concluzie: Maven nu descoperă JAR-uri arbitrare după numele fișierului. Rezolvă coordonatele declarate, descarcă artefactul POM, urmărește dependențele respective ale POM, aplică domeniul de aplicare și reguli opționale și folosește medierea dependenței atunci când mai multe căi solicită versiuni diferite.
Ce vei învăța
- Cum participă la rezoluție depozitele locale, centrale, în oglindă și private.
- De ce POM-ul unei dependențe – nu JAR-ul în sine – descrie majoritatea cerințelor tranzitive.
- Cum să inspectați graficul efectiv înainte de a înlocui o versiune.
Cui se adresează: utilizatorii Maven care doresc să înțeleagă de unde provin artefactele descărcate și de ce apar biblioteci suplimentare.
Poziția 2026: Coordonatele mai vechi ale POI Apache de mai jos rămân utile ca exemplu istoric, nu ca recomandare de versiune. Utilizați dependențe actuale acceptate, depozite HTTPS de încredere, controale pentru sumă de verificare/semnătură acolo unde sunt disponibile și o politică de actualizare a dependențelor.
Notă de siguranță: comenzile și exemplele de configurare din articolul original nu au fost reluate într-un mediu de producție actual. Verificați versiunile acceptate, copiile de rezervă, controalele de acces și pașii de retragere într-un mediu de testare separat înainte de a le aplica.
Surse primare oficiale
Prezentare generală.
Maven descarcă automat borcane de pe internet, dar aș dori să vă explic exact cum funcționează.
Premisa acestui articol este că trebuie să înțelegeți ce este Maven, așa că, dacă nu sunteți familiarizat cu Maven în sine, ar trebui să consultați și următorul articol.
Ce este Maven și ce face Maven?
Cuprins
1. Capacitatea lui Maven de a rezolva dependențele bibliotecilor jar.
Maven poate prelua automat fișierele jar prin simpla definire a fișierelor jar necesare în fișierul pom.xml. De asemenea, învață automat jar-urile dependente necesare pentru a rula acel jar. Aș dori să vă explic cum funcționează.
1-1. Ce trebuie inclus în fișierul pom.xml.
În primul rând, pentru a rezolva dependența de biblioteca jar, informațiile sunt furnizate în fișierul pom.xml. Maven procesează informațiile din fișierul pom.xml. Dacă este necesar "poi-3.17.jar", de exemplu, acesta este descris în pom.xml după cum urmează. (De altfel, "poi-3.17.jar" este un jar utilizat pentru manipularea fișierelor Microsoft Office, cum ar fi Excel.)
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
Prin simpla mențiune de mai sus se va descărca "poi-3.17.jar" de pe Internet și se va descărca de asemenea jar-ul aferent de pe Internet, care este necesar pentru a rula "poi-3.17.jar".
1-2. Cum sunt descărcate de pe internet?
O explicație simplă a sistemului este prezentată în diagrama de mai jos.
Descărcați din depozitele Maven disponibile pe internet. Dacă nu este setat nimic, valoarea implicită este Central Repository. URL-ul este următorul.
https://repo1.maven.org/maven2/
Dacă sunteți interesat, consultați următorul site web pentru o listă de depozite disponibile pe internet.
https://mvnrepository.com/repos
Prima dată, jar-ul este preluat dintr-un depozit extern, dar este copiat în depozitul local și nu mai este preluat începând cu a doua oară. Locația depozitului local este "C:\Users\user\.m2".
Dacă doriți să modificați destinația față de valoarea implicită, puteți modifica destinația și prin includerea următoarei etichete repository în 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. Mecanisme de rezolvare a dependențelor borcanului care urmează să fie achiziționat.
Tocmai am descris un exemplu de obținere a fișierului "poi-3.17.jar", dar "poi-3.17.jar" are nevoie de "commons-collections4-4.1.jar" pentru a funcționa. Acest lucru înseamnă că 'poi-3.17.jar' depinde de 'commons-collections4-4.1.jar'. Mecanismul de rezolvare a acestei dependențe poate fi găsit în depozitul Maven în care este stocat 'poi-3.17.jar'. URL-ul este următorul.
https://repo1.maven.org/maven2/org/apache/poi/poi/3.17/
Cred că este stocat "poi-3.17.pom", iar în acest fișier veți găsi informații conform cărora "poi-3.17.jar" depinde de "commons-collections4-4.1.jar". Aceasta înseamnă că, atunci când recuperează "poi-3.17.jar", sistemul nu recuperează numai fișierul jar, ci și fișierul pom și verifică dacă există alte fișiere jar necesare.
2. rezumat
Mecanismul Maven de rezolvare a dependențelor de bibliotecile jar este acela că dependențele sunt definite în fișierul pom în care sunt stocate fișierele jar care trebuie recuperate.
Vă mulțumim că ați urmărit până la sfârșit.
