Afhængighedsopløsning og caching
Forstå, hvordan Gradle løser afhængigheder, håndterer transitive afhængigheder og anvender dependency-cachen.
Afhængighedsopløsning og caching er en gratis Groovy og Gradle: JVM-automatisering og buildudvikling-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Groovy og Gradle: JVM-automatisering og buildudvikling, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Groovy og Gradle: JVM-automatisering og buildudvikling-kurset indeholder 4 lektioner i alt.
Introduktion til afhængighedsopløsning
Velkommen! I denne lektion dykker vi ned i, hvordan Gradle finder ud af, hvilke biblioteker dit projekt har brug for, og gør dem tilgængelige. Denne proces kaldes afhængighedsopløsning.
Det er afgørende for ethvert projekt fra den virkelige verden, fordi det sikrer, at alle nødvendige komponenter er på plads, så din kode kan kompileres og køre.
Direkte og transitive afhængigheder
Når du føjer et bibliotek til dit projekt, kan det være enten en direkte afhængighed eller en transitiv afhængighed.
- Direkte: Biblioteker, som du udtrykkeligt angiver i filen
build.gradle. - Transitiv: Biblioteker, som dine direkte afhængigheder har brug for for at fungere. Gradle henter automatisk disse for dig.
Gradles opløsningsproces
Her er en forenklet beskrivelse af, hvordan Gradle opløser afhængigheder:
- Gradle læser filen
build.gradlefor at finde de erklærede afhængigheder. - Gradle kontrollerer sin lokale cache for disse afhængigheder og deres transitive afhængigheder.
- Hvis de ikke findes, forespørger Gradle de konfigurerede eksterne repositories (f.eks. Maven Central).
- Gradle downloader de nødvendige artefakter og gemmer dem i cachen.
Eksempel på transitive afhængigheder
Én direkte afhængighed kan medføre mange andre! Hvis du f.eks. erklærer jackson-databind, har den også brug for jackson-core og jackson-annotations.
Her er et uddrag til din build.gradle:
plugins {
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.0'
}Gradle håndterer at finde jackson-core og jackson-annotations for dig.
Håndtering af konflikter mellem afhængigheder
Hvad sker der, hvis to direkte afhængigheder medfører forskellige versioner af den *samme* transitive afhængighed? Det kaldes en afhængighedskonflikt.
Som standard bruger Gradle strategien 'nærmest først'. Gradle vælger den version, der er 'tættest' på roden af dit afhængighedstræ. Hvis afstandene er ens, vælger Gradle ofte den højere version.
Undersøg dine afhængigheder
Hvis du vil forstå, hvad der faktisk bliver hentet ind i dit projekt, er kommandoen gradle dependencies din bedste ven!
Den genererer et komplet afhængighedstræ, som viser både direkte og transitive afhængigheder og fremhæver eventuelle konflikter.
gradle dependencies --configuration implementationDenne kommando hjælper dig med at fejlfinde problemer med afhængighedsopløsning.
Introduktion til afhængighedscachen
Forestil dig, at du skal downloade det samme bibliotek, hver gang du bygger dit projekt. Det ville være langsomt!
Gradle løser dette med sin afhængighedscache. Det er lokal lagring på din computer, hvor alle downloadede artefakter (JAR-filer osv.) opbevares.
Placeringen af Gradles lokale cache
Afhængighedscachen ligger typisk i din brugers hjemmemappe. Du finder den her:
~/.gradle/cachesHerinde kan du se mapper til forskellige typer artefakter og metadata. Du behøver normalt ikke at arbejde direkte med den, men det er godt at vide, hvor den findes!
Hvorfor cachelagring er vigtig
Afhængighedscachen giver flere vigtige fordele:
- Hastighed: Bygninger går meget hurtigere, fordi artefakter hentes lokalt i stedet for over netværket.
- Bygninger uden internet: Du kan bygge dit projekt selv uden internetforbindelse, så længe de nødvendige afhængigheder allerede ligger i cachen.
- Konsistens: Dine bygninger bruger de samme versioner af afhængighederne, hvilket fremmer gentagelige resultater.
Et grundlæggende Groovy-program
Her er en enkel Groovy-applikation, som kan køres, for at demonstrere et simpelt kørbart program. Selvom den ikke bruger eksterne afhængigheder, er det grundlæggende at forstå, hvordan kode køres, for at se, hvordan Gradle håndterer afhængigheder i din faktiske projektkode.
public class Main {
public static void main(String[] args) {
String greeting = "Hello, CoddyKit Learners!";
System.out.println(greeting);
}
}Test din viden
Hvilken af følgende beskrivelser forklarer bedst Gradles standardadfærd, når konflikter mellem forskellige versioner af den samme transitive afhængighed skal løses?
Opsummering af lektionen
Vi har gennemgået det grundlæggende i afhængighedsopløsning og cachelagring i Gradle. Du forstår nu forskellen mellem direkte og transitive afhængigheder, hvordan Gradle løser dem, og hvordan Gradle håndterer konflikter.
Du har også lært om afhængighedscachen og dens fordele ved hurtigere og mere pålidelige bygninger. Denne viden er vigtig for effektiv projektstyring!
Lær Groovy med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 12
- Lektioner
- 48
Ofte stillede spørgsmål
Er lektionen “Afhængighedsopløsning og caching” gratis?
Ja — hele teksten til “Afhængighedsopløsning og caching” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Groovy og Gradle: JVM-automatisering og buildudvikling-kurset, skal du opgradere til CoddyKit PRO. Groovy og Gradle: JVM-automatisering og buildudvikling-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Afhængighedsopløsning og caching”?
Forstå, hvordan Gradle løser afhængigheder, håndterer transitive afhængigheder og anvender dependency-cachen. Du øver dig i Groovy og Gradle: JVM-automatisering og buildudvikling med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Groovy og Gradle: JVM-automatisering og buildudvikling?
Der kræves ingen tidligere erfaring. Groovy og Gradle: JVM-automatisering og buildudvikling på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Afhængighedsopløsning og caching”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Groovy og Gradle: JVM-automatisering og buildudvikling-lektion?
Ja. Alle Groovy og Gradle: JVM-automatisering og buildudvikling-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Deklaration af projektafhængigheder
- Afhængighedsopløsning og caching
- Brugerdefinerede repositories og BOM'er
- Løsning af versionskonflikter og afhængighedsbegrænsninger