Hoe Maven transitieve JAR-afhankelijkheden oplost


Datum van publicatie:

Bijgewerkt:


Artikelen > Hoe Maven automatisch jar bibliotheek afhankelijkheden oplost.

2026 status en veilig gebruik

Conclusie: Maven ontdekt geen willekeurige JAR's op bestandsnaam. Het lost de opgegeven coördinaten op, downloadt het artefact POM, volgt dat de afhankelijkheden van POM, past toepassingsgebied en optionele regels, en maakt gebruik van afhankelijkheidsmediation wanneer meerdere paden verschillende versies aanvragen.

Wat je zult leren

  • Hoe lokale, centrale, spiegel- en particuliere repositories deelnemen aan de afwikkeling.
  • Waarom de POM/JAR zelf de meest transitieve eisen van een afhankelijkheid overstijgt.
  • Hoe de effectieve grafiek te inspecteren alvorens een versie te bepalen.

Voor wie: Maven gebruikers die willen begrijpen waar gedownloade artefacten vandaan komen en waarom extra bibliotheken verschijnen.

Actualisatie voor 2026: De oudere Apache POI coördinaten hieronder blijven nuttig als historisch voorbeeld, geen versie aanbeveling. Gebruik de huidige ondersteunde afhankelijkheden, vertrouwde HTTPS repositories, controlesom/handtekening controles waar beschikbaar, en een afhankelijkheidsupdate beleid.

Veiligheidsopmerking: de opdrachten en configuratievoorbeelden uit het oorspronkelijke artikel zijn niet opnieuw in een moderne productieomgeving uitgevoerd. Controleer ondersteunde versies, back-ups, toegangsbeheer en terugrolstappen eerst in een afzonderlijke testomgeving.

Officiële primaire bronnen

Overzicht

Maven downloadt JAR-bestanden en hun afhankelijkheden automatisch uit repositories. In deze sectie wordt het oplossingsmechanisme beschreven.

Zijn POM, artefact en lifecycle nog geen bekende begrippen, begin dan met de volgende introductie.

Apache Maven: POM, lifecycle en afhankelijkheden

Inhoudsopgave

  1. Maven's vermogen om jar bibliotheek afhankelijkheden op te lossen.
  2. samenvatting

1. JAR-afhankelijkheden oplossen met Maven

Declareer een afhankelijkheid in pom.xml; Maven downloadt vervolgens het gevraagde artefact en de transitieve afhankelijkheden.

1-1. Wat op te nemen in het pom.xml bestand.

Dependencies worden in pom.xml gedeclareerd met Maven-coördinaten. In het volgende voorbeeld wordt Apache POI 3.17 opgegeven, een library die onder meer Microsoft Office-documenten kan verwerken.

pom.xml


<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.17</version>
</dependency>

Op basis van deze declaratie haalt Maven "poi-3.17.jar" en de vereiste transitieve dependencies op.

1-2. Hoe worden ze van het internet gedownload?

Een eenvoudige uitleg van het systeem is te zien in het onderstaande schema.

Maven Repository.

Maven zoekt artefacten in de geconfigureerde repositories. Zonder aanvullende instellingen gebruikt het Maven Central op het volgende adres.

https://repo1.maven.org/maven2/

Zie de volgende website voor een lijst van op het internet beschikbare repositories, indien u daarin geïnteresseerd bent.

https://mvnrepository.com/repos

De eerste keer wordt de jar opgehaald uit een externe repository, maar hij wordt gekopieerd naar de lokale repository en wordt vanaf de tweede keer niet meer opgehaald. De locatie van de lokale repository is "C:\Users.m2".

Als je de bestemming wilt veranderen van de standaard waarde, kun je ook de bestemming veranderen door de volgende repository tag in pom.xml op te nemen.

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. Afhankelijkheden van een JAR-artefact oplossen

We hebben zojuist een voorbeeld beschreven van het verkrijgen van 'poi-3.17.jar', maar 'poi-3.17.jar' vereist 'commons-collections4-4.1.jar' om te kunnen draaien. Dit betekent dat 'poi-3.17.jar' afhankelijk is van 'commons-collections4-4.1.jar'. Het mechanisme om deze afhankelijkheid op te lossen kan gevonden worden in de Maven repository waar de 'poi-3.17.jar' is opgeslagen. De URL is als volgt.

https://repo1.maven.org/maven2/org/apache/poi/poi/3.17/

De repository bevat ook "poi-3.17.pom". Maven leest deze POM, vindt de dependency op "commons-collections4-4.1.jar" en herhaalt de resolutie voor andere vereiste artefacten. Controleer de resulterende dependency-graaf voordat je een versie overschrijft.

2. Conclusie

De POM van het project declareert directe artefacten; de POM-bestanden in repositories beschrijven hun transitieve dependencies. Maven lost die graaf op, downloadt de vereiste bestanden en bewaart ze in de lokale repository.

■INFORMATION

Artikelen


■PROFILE

Profiel


■Contact

Contact