Groovy och Gradle: JVM-automatisering och byggsystemutveckling · Lektion

Lösa versionskonflikter och beroendebegränsningar

Diagnostisera och åtgärda versionskrockar mellan beroenden med beroenderapporten, strategier för upplösning, begränsningar och tvingade versioner.

Lektion 4 av 413 steg

Lösa versionskonflikter och beroendebegränsningar är en gratis lektion i Groovy och Gradle: JVM-automatisering och byggsystemutveckling på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Groovy och Gradle: JVM-automatisering och byggsystemutveckling, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Groovy och Gradle: JVM-automatisering och byggsystemutveckling innehåller totalt 4 lektioner.

Konfliktproblemet

Två bibliotek som Ni är beroende av kan vardera hämta en annan version av samma transitiva beroende. Gradle måste välja en av dem — och fel val orsakar fel vid körning. Att hantera detta är en central färdighet.

Standard: den nyaste vinner

Som standard löser Gradle en konflikt genom att välja den högsta begärda versionen av ett beroende i grafen. Det är oftast säkert, men inte alltid.

Visa beroendeträdet

Tasken dependencies skriver ut hela den lösta grafen och visar vilken version som vann och varför.

gradle dependencies --configuration runtimeClasspath

Förklara ett enskilt beroende

Tasken dependencyInsight förklarar exakt hur ett beroende löstes och vem som begärde varje version.

gradle dependencyInsight --dependency guava

Tvinga fram en version

Ni kan tvinga fram en specifik version och åsidosätta konfliktlösningen med en lösningsstrategi.

configurations.all {
    resolutionStrategy {
        force 'com.google.guava:guava:32.1.3-jre'
    }
}

Beroendebegränsningar

Det moderna tillvägagångssättet använder constraints för att deklarera en tillåten version utan att lägga till beroendet direkt — renare än force.

dependencies {
    constraints {
        implementation 'com.google.guava:guava:32.1.3-jre'
    }
}

Utesluta transitiva beroenden

Ibland är ett transitivt beroende helt oönskat. Uteslut det från beroendet som tar med det.

implementation('org.example:lib:1.0') {
    exclude group: 'commons-logging'
}

Avvisa problematiska versioner

En lösningsstrategi kan avvisa kända trasiga versioner så att Gradle aldrig väljer dem.

resolutionStrategy {
    componentSelection {
        all { if (candidate.version == '1.2.0') reject('known bug') }
    }
}

Misslyckas vid konflikt

För strikt reproducerbarhet kan Ni instruera Gradle att misslyckas med bygget så fort en versionskonflikt uppstår, vilket tvingar Er att lösa den uttryckligen.

resolutionStrategy { failOnVersionConflict() }

Låsa beroenden

Låsning av beroenden skriver de lösta versionerna till en låsfil, så att byggen blir helt reproducerbara på olika datorer och över tid.

gradle dependencies --write-locks

Plattformar och BOM:er

Importera en publicerad BOM med notationen platform för att anpassa många relaterade beroenden till en gemensamt testad uppsättning versioner och slippa hantera versionerna manuellt.

dependencies {
    implementation platform('org.springframework.boot:spring-boot-dependencies:3.2.0')
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

Snabb kontroll

Testa Era kunskaper om konfliktlösning.

Sammanfattning

Ni har lärt Er att hantera versionskonflikter:

  • Standardlösningen väljer den högsta versionen
  • Inspektera med dependencies och dependencyInsight
  • Åsidosätt med force eller, helst, constraints
  • exclude tar bort oönskade transitiva beroenden; avvisning blockerar problematiska versioner
  • Låsning av beroenden gör byggen reproducerbara
Gratis att börja

Lär dig Groovy med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
12
Lektioner
48

Vanliga frågor

Är lektionen ”Lösa versionskonflikter och beroendebegränsningar” gratis?

Ja – hela texten till ”Lösa versionskonflikter och beroendebegränsningar” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Groovy och Gradle: JVM-automatisering och byggsystemutveckling, kan Ni uppgradera till CoddyKit PRO. Kursen i Groovy och Gradle: JVM-automatisering och byggsystemutveckling innehåller totalt 4 lektioner.

Vad lär jag mig i ”Lösa versionskonflikter och beroendebegränsningar”?

Diagnostisera och åtgärda versionskrockar mellan beroenden med beroenderapporten, strategier för upplösning, begränsningar och tvingade versioner. Ni övar på Groovy och Gradle: JVM-automatisering och byggsystemutveckling med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Groovy och Gradle: JVM-automatisering och byggsystemutveckling?

Du behöver inga förkunskaper. Utbildningen i Groovy och Gradle: JVM-automatisering och byggsystemutveckling på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Lösa versionskonflikter och beroendebegränsningar”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Groovy och Gradle: JVM-automatisering och byggsystemutveckling-lektionen?

Ja. Varje Groovy och Gradle: JVM-automatisering och byggsystemutveckling-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Deklarera projektberoenden
  2. Beroendeupplösning och cachning
  3. Anpassade arkiv och BOM:er
  4. Lösa versionskonflikter och beroendebegränsningar
← Tillbaka till Groovy och Gradle: JVM-automatisering och byggsystemutveckling