Hvordan Maven automatisk løser jar-biblioteksafhængigheder.
Udgivelsesdato:
Opdateret:
INFORMATION > Hvordan Maven automatisk løser jar-biblioteksafhængigheder.
2026-status og sikker brug
Konklusion: Maven opdager ikke vilkårlige JAR'er efter filnavn. Den løser erklærede koordinater, downloader artefakt-POM'en, følger denne POM's afhængigheder, anvender omfang og valgfri regler og bruger afhængighedsformidling, når flere stier anmoder om forskellige versioner.
Hvad vil du lære
- Hvordan lokale, centrale, spejl- og private arkiver deltager i opløsning.
- Hvorfor en afhængigheds POM - ikke selve JAR - beskriver de fleste transitive krav.
- Sådan inspicerer du den effektive graf, før du tilsidesætter en version.
Hvem er dette til: Maven-brugere, der ønsker at forstå, hvor downloadede artefakter kommer fra, og hvorfor der vises ekstra biblioteker.
2026-position: De ældre Apache POI-koordinater nedenfor forbliver nyttige som et historisk eksempel, ikke en versionsanbefaling. Brug nuværende understøttede afhængigheder, betroede HTTPS-lagre, kontrolsum/signaturkontroller, hvor de er tilgængelige, og en afhængighedsopdateringspolitik.
Sikkerhedsbemærkning: Kommandoerne og konfigurationseksemplerne i den originale artikel er ikke blevet kørt igen i et aktuelt produktionsmiljø. Bekræft understøttede versioner, sikkerhedskopier, adgangskontrol og rollback-trin i et separat testmiljø, før du anvender dem.
Officielle primære kilder
Oversigt.
Maven downloader automatisk jars fra internettet, men jeg vil gerne forklare 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. Maven's evne til at løse jar-biblioteksafhæ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 afhængige jars, der er nødvendige for at køre den pågældende jar. Jeg vil gerne forklare, 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 krukke, der skal erhverves.
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é
Maven's 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.
Tak, fordi du kiggede med til slutningen.
