Introdução: O familiar triângulo amarelo
Você já viu este aviso no IntelliJ IDEA ou ao compilar com Gradle? Ele aparece, você verifica o build.gradle.kts — e vê que as versões coincidem. Mas a IDE insiste em destacar com um triângulo amarelo: "Kotlin plugin version is not the same as library version". Familiar?
Este é um dos problemas mais populares no Stack Overflow (milhares de visualizações!). Parece que o sistema enlouqueceu. Mas, na verdade, existe uma razão técnica bem específica por trás disso. Neste artigo, não vamos apenas remover o incômodo aviso, mas também entender como ele afeta a otimização e o desempenho do seu projeto Kotlin.
Essência do problema: Por que o aviso aparece se as versões coincidem?
Vamos analisar a anatomia do erro. Você escreve no build.gradle.kts:
plugins { kotlin("jvm") version "1.9.22" apply false}
// Na seção dependencies:implementation(kotlin("stdlib", "1.9.22"))Parece tudo correto. Mas o Gradle vê dois artefatos diferentes:
- Kotlin Gradle Plugin — versão 1.9.22 (gerencia a compilação)
- Kotlin Stdlib — versão 1.9.22 (biblioteca de tempo de execução)
O problema é que o Gradle pode puxar uma dependência transitiva com uma versão diferente do Kotlin. Por exemplo, se o seu projeto usa a biblioteca Fuel ou Ktor, elas podem trazer consigo o kotlin-stdlib:1.8.0. Como resultado, o classpath acaba tendo duas versões diferentes da mesma biblioteca.
A IDE vê o conflito de versões entre o plugin (1.9.22) e uma das bibliotecas (1.8.0) — e emite o aviso. Enquanto isso, sua dependência explícita kotlin("stdlib", "1.9.22") pode ser sobrescrita pela transitiva.
Diagnóstico: Como encontrar o culpado?
Antes de tratar, é preciso entender de onde vem a versão antiga. Use as ferramentas integradas do Gradle.
Método 1: Tarefa Gradle dependencies
Execute no terminal:
./gradlew dependencies --configuration runtimeClasspathNa saída, procure linhas contendo kotlin-stdlib. Você verá algo como:
+--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22| \\--- org.jetbrains.kotlin:kotlin-stdlib-common:1.9.22+--- com.example:some-library:2.0.0| \\--- org.jetbrains.kotlin:kotlin-stdlib:1.8.0 -> 1.9.22A seta -> mostra que o Gradle resolveu o conflito a favor da versão 1.9.22. Mas o aviso ainda pode persistir se o plugin analisar as versões originais.
Método 2: IntelliJ IDEA — Module Settings
Abra File → Project Structure → Modules. Selecione seu módulo e veja a aba Dependencies. Lá são exibidas todas as dependências, incluindo as transitivas. Se você vir kotlin-stdlib:1.8.0 (ou outra versão) — essa é a fonte do problema.
4 formas de corrigir o aviso (e melhorar o desempenho)
Agora vamos ao que interessa — as soluções. Cada método afeta a otimização do build e o desempenho em tempo de execução.
Método 1: Alinhamento forçado de versões (Alignment)
A abordagem mais correta é usar o Kotlin BOM (Bill of Materials). Isso garante que todas as dependências Kotlin terão a mesma versão.
// build.gradle.ktsdependencies { implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.9.22")) implementation("org.jetbrains.kotlin:kotlin-stdlib") // Agora não precisa especificar a versão — ela vem do BOM}Por que isso é bom para o desempenho? O BOM elimina a duplicação de classes no classpath. Se você tem duas versões do kotlin-stdlib
Blogs
Book Recommendations
Leia também
Como escrever uma API REST em PHP em 30 minutos: guia passo a passo
Principais erros de iniciantes em TypeScript: de A a Z
Testes em subpastas Go: análise completa para iniciantes
Como sair de loops aninhados em Java: 4 maneiras práticas
Injeção de Dependência em Java: para iniciantes — guia completo