Estou mergulhando em Scala e notei sbt. Tenho ficado muito feliz com o Gradle em projetos java / groovy e sei que existe um plugin scala para Gradle.
Quais poderiam ser boas razões para favorecer o sbt em vez do Gradle em um projeto Scala?
Estou mergulhando em Scala e notei sbt. Tenho ficado muito feliz com o Gradle em projetos java / groovy e sei que existe um plugin scala para Gradle.
Quais poderiam ser boas razões para favorecer o sbt em vez do Gradle em um projeto Scala?
Respostas:
Observe que uma diferença importante entre o SBT e o Gradle é o gerenciamento de dependências :
É verdade que o cache pode ficar confuso, mas não é verdade que Ivy não entende a resolução de instantâneos. Eugene explicou esse ponto em outro tópico, talvez na lista de administradores. Há um problema com a atualização automática do sbt que foi corrigido no 0.12.
O que Ivy não suporta, até onde eu sei, é a publicação de instantâneos da maneira que o Maven faz. Acredito ter declarado isso em outro lugar, mas se alguém quiser melhorar a situação, minha opinião é que o melhor esforço é trabalhar com a equipe do Gradle para reutilizar seu código de gerenciamento de dependência.
Para que você saiba, os problemas com as dependências de instantâneos do Ivy e Maven foram um dos motivos pelos quais o Gradle acabou substituindo o Ivy por seu próprio código de gerenciamento de dependências. Foi uma tarefa grande, mas nos trouxe muitas coisas boas.
Este tweet menciona que todas as situações podem evoluir no futuro:
Mark disse no passado que estava interessado em usar Gradle em vez de Ivy para o SBT.
(ambas as ferramentas podem aprender uma com a outra )
Para mim, as principais características do SBT são:
fsc
).~test
recompilará e testará seu projeto sempre que salvar uma modificação.As desvantagens são:
sbt é um Scala DSL e, para ele, Scala é um cidadão de primeira classe, portanto, em princípio, parece ser uma boa opção.
Mas o sbt sofre de grandes mudanças incompatíveis entre as versões, o que torna difícil encontrar o plugin de trabalho correto para uma tarefa e fazê-lo funcionar.
Eu pessoalmente desisti do sbt, pois estava causando mais problemas do que resolvendo. Na verdade, mudei para o gradle.
Vai saber.
Sbt e gradle, ambos são baseados em linguagens tipadas estaticamente .... mas sbt tem poucas vantagens: