Groovy og Gradle: JVM-automatisering og buildudvikling · Lektion

Afhængighedsopløsning og caching

Forstå, hvordan Gradle løser afhængigheder, håndterer transitive afhængigheder og anvender dependency-cachen.

Lektion 2 af 412 trin

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:

  1. Gradle læser filen build.gradle for at finde de erklærede afhængigheder.
  2. Gradle kontrollerer sin lokale cache for disse afhængigheder og deres transitive afhængigheder.
  3. Hvis de ikke findes, forespørger Gradle de konfigurerede eksterne repositories (f.eks. Maven Central).
  4. 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 implementation

Denne 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/caches

Herinde 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!

Gratis at komme i gang

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

  1. Deklaration af projektafhængigheder
  2. Afhængighedsopløsning og caching
  3. Brugerdefinerede repositories og BOM'er
  4. Løsning af versionskonflikter og afhængighedsbegrænsninger
← Tilbage til Groovy og Gradle: JVM-automatisering og buildudvikling