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. Zdolność Mavena do rozwiązywania zależności bibliotek jar.
  2. streszczenie

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.

pom.xml


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

Repozytorium Maven.

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.

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

■INFORMATION

Artykuły


■PROFILE

Profil


■Kontakt

Kontakt