Jak Maven rozwiązuje zależności przechodnie z repozytoriów
Data publikacji:
Aktualizacja:
Artykuły > Jak Maven rozwiązuje zależności przechodnie z repozytoriów
Stan na rok 2026 i bezpieczne użytkowanie
Wniosek: Maven nie wykrywa dowolnych plików JAR według nazwy pliku. Rozpoznaje zadeklarowane współrzędne, pobiera POM artefaktu, śledzi zależności POM, stosuje reguły dotyczące zakresu i opcjonalne oraz wykorzystuje mediację zależności, gdy wiele ścieżek żąda różnych wersji.
Czego się nauczysz
- W jaki sposób repozytoria lokalne, centralne, lustrzane i prywatne uczestniczą w rozwiązywaniu problemów.
- Dlaczego POM zależności — a nie sam plik JAR — opisuje większość wymagań przechodnich.
- Jak sprawdzić efektywny wykres przed zastąpieniem wersji.
Dla kogo: użytkownicy Mavena, którzy chcą zrozumieć, skąd pochodzą pobrane artefakty i dlaczego pojawiają się dodatkowe biblioteki.
Pozycja na rok 2026: starsze współrzędne POI Apache poniżej pozostają przydatne jako przykład historyczny, a nie zalecenie wersji. Korzystaj z aktualnie obsługiwanych zależności, zaufanych repozytoriów HTTPS, kontroli sum kontrolnych/podpisów, jeśli są dostępne, oraz zasad aktualizacji zależności.
Uwaga dotycząca bezpieczeństwa: polecenia i przykłady konfiguracji z pierwotnego artykułu nie zostały ponownie uruchomione we współczesnym środowisku produkcyjnym. Przed użyciem sprawdź wspierane wersje, kopie zapasowe, kontrolę dostępu i procedurę wycofania w oddzielnym środowisku testowym.
Oficjalne źródła pierwotne
Przegląd
Maven automatycznie pobiera pliki JAR i ich zależności z repozytoriów. W tej sekcji opisano mechanizm rozwiązywania zależności.
Jeśli pojęcia POM-u, artefaktu i cyklu życia nie są jeszcze znane, zacznij od poniższego wprowadzenia.
Co to jest Maven i do czego służy?
Spis treści
1. Rozwiązywanie zależności JAR za pomocą Mavena
Wystarczy zadeklarować zależność w pom.xml, a Maven pobierze wskazany artefakt i jego zależności przechodnie.
1-1. Co należy uwzględnić w pliku pom.xml.
Zależności deklaruje się w pom.xml za pomocą współrzędnych Mavena. Poniższy przykład wskazuje Apache POI 3.17 — bibliotekę używaną między innymi do przetwarzania dokumentów Microsoft Office.
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
Na podstawie tej deklaracji Maven pobiera "poi-3.17.jar" oraz zależności przechodnie potrzebne do jego działania.
1-2. W jaki sposób są one pobierane z Internetu?
Proste wyjaśnienie działania systemu przedstawiono na poniższym schemacie.
Maven rozwiązuje artefakty w skonfigurowanych repozytoriach. Bez dodatkowych ustawień korzysta z Maven Central dostępnego pod poniższym adresem.
https://repo1.maven.org/maven2/
Lista repozytoriów dostępnych w Internecie znajduje się na następującej stronie internetowej.
https://mvnrepository.com/repos
Za pierwszym razem plik JAR jest pobierany z zewnętrznego repozytorium, ale jest kopiowany do lokalnego repozytorium i od drugiego razu nie jest pobierany. Lokalizacja lokalnego repozytorium to "C:\u2002\u2002".
Jeśli chcesz zmienić miejsce docelowe w stosunku do wartości domyślnej, możesz je zmienić, umieszczając w pom.xml następujący znacznik repozytorium.
<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. Rozwiązywanie zależności artefaktu JAR
Opisaliśmy właśnie przykład uzyskania pliku 'poi-3.17.jar', ale 'poi-3.17.jar' wymaga do działania pliku 'commons-collections4-4.1.jar'. Oznacza to, że plik 'poi-3.17.jar' zależy od pliku 'commons-collections4-4.1.jar'. Mechanizm rozwiązywania tej zależności można znaleźć w repozytorium Mavena, w którym przechowywany jest plik "poi-3.17.jar". Adres URL jest następujący.
https://repo1.maven.org/maven2/org/apache/poi/poi/3.17/
Repozytorium zawiera także "poi-3.17.pom". Maven odczytuje ten POM, wykrywa zależność od "commons-collections4-4.1.jar" i powtarza rozwiązywanie dla kolejnych wymaganych artefaktów. Przed wymuszeniem wersji warto sprawdzić wynikowy graf.
2. Podsumowanie
POM projektu deklaruje artefakty bezpośrednie, a POM-y opublikowane w repozytoriach opisują zależności przechodnie. Maven rozwiązuje ten graf, pobiera potrzebne pliki i zapisuje je w repozytorium lokalnym.
