Skip to content
Latchkey

Gradle vs sbt: qual build tool JVM/Scala para CI?

Gradle é a build tool JVM de propósito geral com cache remoto; sbt é nativo de Scala com compilação incremental ajustada para o compilador Scala.

Gradle é uma build tool JVM flexível (DSL Groovy/Kotlin) com builds incrementais a nível de task e um build cache local/remoto, utilizável para Java, Kotlin e Scala. sbt é a build tool nativa de Scala com forte compilação incremental e um shell interativo.

Gradlesbt
Linguagem principalJava/Kotlin/ScalaScala-first
ConfigDSL Groovy/KotlinDSL Scala (build.sbt)
Builds incrementaisA nível de taskFortes (compilador Zinc)
Build cacheLocal + remotoLocal (incremental)
Melhor paraJVM misto, poliglotaProjetos Scala

No CI

Para projetos pesados em Scala, a compilação incremental baseada em Zinc do sbt é finamente ajustada e o ecossistema a espera. Gradle é a escolha mais ampla para builds JVM/poliglota mistos e oferece um build cache remoto compartilhado entre jobs de CI, o que é um grande ganho de velocidade para repos multi-módulo grandes. Escolha sbt para bases de código Scala-first, Gradle quando quiser uma única ferramenta entre linguagens com cache remoto.

Faça cache

Faça cache dos caches de dependências e de build com chave nos seus arquivos de build, e para o Gradle configure um build cache remoto entre jobs de CI. Ambos rodam em runners de CI; runners gerenciados mais rápidos encurtam os passos que ainda executam em um cache miss, e compilações Scala são pesadas.

O veredito

Projeto Scala-first: sbt pela sua compilação incremental ajustada. Builds JVM mistos/poliglota querendo um cache remoto: Gradle. Faça cache de dependências e builds em qualquer um; compilações Scala se beneficiam mais de runners rápidos.

Guias relacionados