comparación de sbt y Gradle [cerrado]


Estoy sumergiéndome en Scala y noté sbt. He estado bastante contento con Gradle en proyectos java / groovy, y sé que hay un plugin de scala para Gradle.

¿Cuáles podrían ser buenas razones para favorecer sbt sobre Gradle en un proyecto de Scala?

Author: Hans Westerbeek, 2012-06-16

5 answers

Tenga en cuenta que una diferencia clave entre SBT y Gradle es su gestión de dependencias :

  • SBT: Ivy , con una revisión que puede ser dada como fija (1.5.2, por ejemplo) o como última (o dinámica).
    Ver "Ivy Dependencia "
    Eso significa que el soporte del mecanismo "- SNAPSHOT " puede ser problemático, a pesar de que Mark Harrah detalla en este hilo :

Es cierto que la caché puede confundirse, pero no es cierto que Ivy no entienda resolver instantáneas. Eugene explicó este punto en otro hilo, tal vez en la lista de administración. Hay un problema con la actualización automática de sbt que se abordó en 0.12.

Lo que Ivy no soporta, por lo que sé, es publicar instantáneas de la manera en que Maven lo hace. Creo que he dicho esto en otro lugar, pero si alguien quiere mejorar la situación, mi opinión es que el esfuerzo se gasta mejor trabajando con el equipo de Gradle para reutilizar su código de gestión de dependencias.

Solo para que sepas, los problemas con las dependencias de instantáneas de Ivy y Maven fueron una de las razones por las que Gradle eventualmente reemplazó a Ivy con su propio código de administración de dependencias. Fue una gran tarea, pero nos trajo mucha bondad.

Este tweet menciona que la situación de todo podría evolucionar en el futuro:

Mark dijo en el pasado que estaba interesado en usar Gradle en lugar de Ivy para SBT.

(ambas herramientas pueden aprender unas de otras )

 58
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-21 15:37:03

Para mí las características clave de SBT son:

  • Compilación rápida (más rápida que fsc).
  • Compilación/pruebas continuas: el comando ~test recompilará y probará tu proyecto cada vez que guardes una modificación.
  • Compilación cruzada y publicación cruzada, a través de varias versiones de scala.
  • Recuperando automáticamente dependencias con la correcta compatibilidad de la versión de scala.

Las desventajas son:

  • Una sintaxis jeroglífica que tiende a desalentar a los nuevos usuarios (especialmente si vienen de Java)
  • No es fácil definir una "tarea": si necesita un procedimiento de compilación especial, tendrá que encontrar un plugin o escribir un plugin usted mismo.
 50
Author: paradigmatic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-16 14:50:12

Sbt es un Scala DSL y para ello Scala es un ciudadano de primera clase, por lo que en principio parece ser una buena opción.

Pero sbt sufre de importantes cambios incompatibles entre versiones, lo que hace difícil encontrar el complemento correcto para una tarea y hacer que funcione.

Personalmente renuncié a sbt, ya que estaba causando más problemas de los que resolvía. En realidad me cambié a Gradle.

Vaya figura.

 38
Author: Jens Schauder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-16 08:51:43

Soy bastante nuevo en gradle, y muy nuevo en sbt - lo que realmente me gusta de sbt hasta ahora es la consola interactiva. Me permite usar comandos como 'inspect' para tener una mejor idea de lo que está pasando. AFAIK gradle no proporciona algo como este cajero automático.

 4
Author: eugenevd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-27 15:31:01

Sbt y gradle, ambos están basados en lenguajes de tipo estático....pero sbt tiene pocas ventajas:

  • mejor soporte para plugins, especialmente autoplugins
  • creación de tareas y gestión de dependencias entre tareas
  • sbt se adapta especialmente a los proyectos de scala en el sentido de que soporta compilaciones incrementales y la mayor parte del sbt en sí está escrito en scala y las definiciones de compilación de sbt están escritas en scala
  • sbt tiene soporte de shell interactivo con muchos útiles incorporados tareas
  • el ciclo de vida predeterminado de sbt es bastante útil y puede comenzar a ser novato con bastante menos esfuerzo
 -11
Author: Saby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-08 07:06:07