Pros y contras de usar sbt vs maven en el proyecto Scala [cerrado]


¿Qué herramienta de compilación es la mejor para Scala? ¿Cuáles son los pros y los contras de cada uno de ellos? ¿Cómo puedo determinar cuál de ellos usar en un proyecto?

Author: Konstantin Solomatov, 2012-07-01

2 answers

Estamos usando Maven para construir proyectos de Scala en el trabajo porque se integra bien con nuestro servidor CI. Podríamos ejecutar un script de shell para iniciar una compilación, por supuesto, pero tenemos un montón de otra información que sale de Maven que queremos entrar en CI. Esa es la única razón por la que se me ocurre usar a Maven para un proyecto de Scala.

De lo contrario, simplemente use SBT. Obtienes acceso a las mismas dependencias (realmente la mejor parte de maven, en mi humilde opinión). También obtienes el incremental compilación, que es enorme. La capacidad de iniciar un shell dentro de su proyecto, que también es genial.

ScalaMock solo funciona con SBT, y probablemente querrá usar eso en lugar de una biblioteca de burla de Java. Además de eso, es mucho más fácil extender SBT ya que puede escribir código scala completo en el archivo de compilación, por lo que no tiene que pasar por todo el rigamarole de escribir un Mojo.

En resumen, solo use SBT a menos que realmente necesite una integración estrecha en su servidor CI.

 77
Author: mblinn,
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-10 12:47:24

La pregunta está en peligro de generar muchas opiniones; sería mejor tener una lista clara de requisitos o una descripción de su entorno, conocimientos previos, etc.

FWIW, hay más opiniones en este hilo de la lista de correo de scala.

Mis 2c son: Ir con sbt si usted no tiene requisitos específicos

  • para proyectos simples, es totalmente sencillo (ni siquiera necesita un archivo de compilación hasta que tenga dependencias)
  • es comúnmente utilizado en proyectos de código abierto de Scala. Puede aprender fácilmente sobre la configuración echando un vistazo a los proyectos de otras personas. Además, muchos proyectos asumen que usa sbt y le proporcionan instrucciones listas para copiar+pegar para agregarlas como una dependencia a su proyecto.
  • si utiliza IntelliJ IDEA, puede estar totalmente integrado. Puedes hacer que IDEA use sbt para compilar continuamente tu proyecto, y viceversa puedes usar sbt para generar IDEA rápidamente proyectos . El último es extremadamente útil si usted está en un ciclo de' snapshot ' con dependiendo de otras de sus propias bibliotecas que se mueven de una versión menor a una versión menor just simplemente cierre el proyecto, actualice la versión en el archivo de compilación, vuelva a ejecutar la tarea gen-idea y vuelva a abrir el proyecto: actualizaciones realizadas.
  • viene listo con la mayoría de las tareas que usted necesita (compile, test, run, doc, publish-local, console) -- el console es una de las mejores características.
  • algunas personas destacan la característica que las dependencias pueden ser repositorios de código fuente tomados directamente de GitHub. No he usado esto, así que no puedo comentar aquí.

Algunas personas odian sbt porque utiliza Ivy para la gestión de dependencias (no puedo comentar sus pros y contras, pero la mayoría de las veces no es un problema), algunas personas odian sbt porque especifica el archivo de compilación en términos de un DSL Scala en lugar de XML. A algunas personas les decepcionó que el formato de sbt cambiara de v0. 7 a v0. 10, pero obviamente, la migración no lo afectará si empieza desde cero.

 20
Author: 0__,
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-10 12:47:48