Resolver Conflitos de Versões e Restrições de Dependências
Diagnostique e corrija conflitos entre versões de dependências usando o relatório de dependências, estratégias de resolução, restrições e versões forçadas.
Resolver Conflitos de Versões e Restrições de Dependências é uma aula grátis de Groovy & Gradle: JVM Automation and Build Engineering no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Groovy & Gradle: JVM Automation and Build Engineering, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Groovy & Gradle: JVM Automation and Build Engineering inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
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 runtimeClasspathExplaining a Single Dependency
The dependencyInsight task explains exactly how one dependency was resolved and who requested each version.
gradle dependencyInsight --dependency guavaForcing 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-locksPlatforms 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
dependenciesanddependencyInsight - Override with
forceor, preferably,constraints excluderemoves unwanted transitives; reject blocks bad versions- Dependency locking makes builds reproducible
Perguntas Frequentes
A aula “Resolver Conflitos de Versões e Restrições de Dependências” é grátis?
Sim — o texto completo de “Resolver Conflitos de Versões e Restrições de Dependências” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Groovy & Gradle: JVM Automation and Build Engineering, atualize para CoddyKit PRO. O curso de Groovy & Gradle: JVM Automation and Build Engineering inclui 4 aulas no total.
O que vou aprender em “Resolver Conflitos de Versões e Restrições de Dependências”?
Diagnostique e corrija conflitos entre versões de dependências usando o relatório de dependências, estratégias de resolução, restrições e versões forçadas. Você pratica Groovy & Gradle: JVM Automation and Build Engineering com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Groovy & Gradle: JVM Automation and Build Engineering?
Nenhuma experiência prévia é necessária. Groovy & Gradle: JVM Automation and Build Engineering no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Resolver Conflitos de Versões e Restrições de Dependências”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Groovy & Gradle: JVM Automation and Build Engineering?
Sim. Cada aula de Groovy & Gradle: JVM Automation and Build Engineering inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Declarando dependências do projeto
- Resolução e armazenamento em cache de dependências
- Repositórios personalizados e BOMs
- Resolver Conflitos de Versões e Restrições de Dependências