Hvordan Maven automatisk løser JAR-afhængigheder.
Udgivet:
Opdateret:
Artikler › Hvordan Maven automatisk løser JAR-afhængigheder.
Status i 2026 og sikker brug
Konklusion: Maven finder ikke JAR-filer alene ud fra filnavnet. Maven løser de deklarerede koordinater, henter artefaktets POM, følger de beskrevne afhængigheder, anvender reglerne for scope og optional og vælger en version, når flere stier kræver forskellige versioner.
Det lærer du
- Hvordan det lokale og centrale repository samt mirrors og private repositories indgår i løsningen.
- Hvorfor en afhængigheds POM - ikke selve JAR - beskriver de fleste transitive krav.
- Sådan undersøger du den faktiske afhængighedsgraf, før du tilsidesætter en version.
Målgruppe: Maven-brugere, der ønsker at forstå, hvor downloadede artefakter kommer fra, og hvorfor der vises ekstra biblioteker.
Aktuel status i 2026: De ældre Apache POI-koordinater nedenfor er et historisk eksempel, ikke en versionsanbefaling. Brug understøttede afhængigheder og betroede HTTPS-repositories, kontrollér checksum eller signatur, hvor det er muligt, og vedligehold en politik for opdatering af afhængigheder.
Sikkerhedsbemærkning: Kommandoerne og konfigurationseksemplerne i den oprindelige artikel er ikke kørt igen i et aktuelt produktionsmiljø. Kontrollér understøttede versioner, tag backup, og forbered en rollback i et separat testmiljø før ændringerne anvendes.
Officielle kilder
Oversigt
Maven downloader automatisk jars fra internettet, men nedenfor forklares præcis, hvordan det fungerer.
Udgangspunktet for denne artikel er, at du skal forstå, hvad Maven er, så hvis du ikke er bekendt med Maven, bør du også læse den følgende artikel.
Hvad er Maven, og hvad gør Maven?
Indholdsfortegnelse
1. Mavens evne til at løse JAR-afhængigheder.
Maven kan automatisk hente JAR-filerne ved blot at definere de nødvendige JAR-filer i pom.xml-filen. Den lærer også automatisk de transitive afhængigheder, der er nødvendige for at køre den pågældende JAR-fil. Nedenfor forklares, hvordan det fungerer.
1-1. Hvad der skal medtages i pom.xml-filen.
For at løse afhængigheden af jar-biblioteket skal du først finde oplysninger i pom.xml-filen for at løse afhængigheden af jar-biblioteket. Maven behandler oplysningerne fra pom.xml-filen. Hvis f.eks. "poi-3.17.jar" er påkrævet, beskrives det i pom.xml som følger. (I øvrigt er "poi-3.17.jar" en jar, der bruges til at manipulere Microsoft Office-filer som f.eks. Excel).
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
Hvis du blot nævner ovenstående, downloader du "poi-3.17.jar" fra internettet og downloader også den medfølgende jar fra internettet, som er nødvendig for at køre "poi-3.17.jar".
1-2. Hvordan downloades de fra internettet?
En simpel forklaring af systemet er vist i nedenstående diagram.
Download fra Maven-repositorier, der er tilgængelige på internettet. Hvis der ikke er angivet noget, er standardværdien Central Repository. URL'en er som følger.
https://repo1.maven.org/maven2/
På følgende websted kan du finde en liste over de arkiver, der er tilgængelige på internettet, hvis du er interesseret.
https://mvnrepository.com/repos
Første gang hentes JAR-filen fra et eksternt arkiv, men den kopieres til det lokale arkiv og hentes ikke fra anden gang og fremefter. Placeringen af det lokale arkiv er "C:\Users\user\.m2".
Hvis du vil ændre destinationen fra standardværdien, kan du også ændre destinationen ved at inkludere følgende repository-tag i 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. Mekanismer til løsning af afhængigheder af den JAR-fil, der hentes.
Vi har netop beskrevet et eksempel på at få fat i "poi-3.17.jar", men "poi-3.17.jar" kræver "commons-collections4-4.1.jar" for at kunne køre. Det betyder, at "poi-3.17.jar" er afhængig af "commons-collections4-4.1.jar". Mekanismen til at løse denne afhængighed kan findes i Maven-repositoriet, hvor "poi-3.17.jar" er gemt. URL'en er som følger.
https://repo1.maven.org/maven2/org/apache/poi/poi/3.17/
Jeg tror, at "poi-3.17.pom" er gemt, og i denne fil kan du finde oplysninger om, at "poi-3.17.jar" afhænger af "commons-collections4-4.1.jar". Det betyder, at når systemet henter "poi-3.17.jar", henter det ikke kun JAR-filen, men også pom-filen og kontrollerer, om der er andre nødvendige JAR-filer.
2. resumé
Mavens mekanisme til at løse afhængigheder af JAR-biblioteker er, at afhængigheder defineres i pom-filen, hvor de JAR-filer, der skal hentes, er gemt.
Det opsummerer de vigtigste trin og begrænsninger.
