0Pricing
Groovy & Gradle: JVM Automation and Build Engineering · Leçon

Résoudre les conflits de versions et les contraintes de dépendances

Diagnostiquez et corrigez les conflits de versions des dépendances à l’aide du rapport de dépendances, des stratégies de résolution, des contraintes et des versions imposées.

Résoudre les conflits de versions et les contraintes de dépendances est une leçon Groovy & Gradle: JVM Automation and Build Engineering gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Groovy & Gradle: JVM Automation and Build Engineering, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Groovy & Gradle: JVM Automation and Build Engineering comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

The Conflict Problem

Two libraries you depend on may each pull in a different version of the same transitive dependency. Gradle must pick one — and the wrong choice causes runtime errors. Managing this is a core skill.

Default: Newest Wins

By default Gradle resolves a conflict by choosing the highest requested version of a dependency across the graph. Usually safe, but not always.

Seeing the Dependency Tree

The dependencies task prints the full resolved graph, showing which version won and why.

gradle dependencies --configuration runtimeClasspath

Explaining a Single Dependency

The dependencyInsight task explains exactly how one dependency was resolved and who requested each version.

gradle dependencyInsight --dependency guava

Forcing a Version

You can force a specific version, overriding the conflict resolution, with a resolution strategy.

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

Dependency Constraints

The modern approach uses constraints to declare an allowed version without adding the dependency directly — cleaner than force.

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

Excluding Transitives

Sometimes a transitive dependency is unwanted entirely. Exclude it from the bringing dependency.

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

Rejecting Bad Versions

A resolution strategy can reject known-broken versions so Gradle never selects them.

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

Failing on Conflict

For strict reproducibility, tell Gradle to fail the build whenever a version conflict occurs, forcing you to resolve it explicitly.

resolutionStrategy { failOnVersionConflict() }

Locking Dependencies

Dependency locking writes resolved versions to a lockfile so builds are fully reproducible across machines and time.

gradle dependencies --write-locks

Platforms and BOMs

Import a published BOM with the platform notation to align many related dependencies on one tested version set, avoiding manual version juggling.

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

Quick Check

Test your conflict resolution knowledge.

Recap

You learned to manage version conflicts:

  • Default resolution picks the highest version
  • Inspect with dependencies and dependencyInsight
  • Override with force or, preferably, constraints
  • exclude removes unwanted transitives; reject blocks bad versions
  • Dependency locking makes builds reproducible

Questions Fréquemment Posées

La leçon « Résoudre les conflits de versions et les contraintes de dépendances » est-elle gratuite ?

Oui — le texte complet de « Résoudre les conflits de versions et les contraintes de dépendances » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Groovy & Gradle: JVM Automation and Build Engineering, passe à CoddyKit PRO. Le cours Groovy & Gradle: JVM Automation and Build Engineering comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Résoudre les conflits de versions et les contraintes de dépendances » ?

Diagnostiquez et corrigez les conflits de versions des dépendances à l’aide du rapport de dépendances, des stratégies de résolution, des contraintes et des versions imposées. Tu pratiques Groovy & Gradle: JVM Automation and Build Engineering avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Groovy & Gradle: JVM Automation and Build Engineering ?

Aucune expérience préalable n'est requise. Groovy & Gradle: JVM Automation and Build Engineering sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Résoudre les conflits de versions et les contraintes de dépendances » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Groovy & Gradle: JVM Automation and Build Engineering ?

Oui. Chaque leçon Groovy & Gradle: JVM Automation and Build Engineering inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Déclaration des dépendances d’un projet
  2. Résolution et mise en cache des dépendances
  3. Dépôts personnalisés et nomenclatures BOM
  4. Résoudre les conflits de versions et les contraintes de dépendances
← Retour à Groovy & Gradle: JVM Automation and Build Engineering