intellij eclipse scala build

eclipse - intellij - scala download



¿Cuál es el mejor sistema de compilación de Scala? (8)

¿Has mirado Intellij IDEA y su integración con Scala ? Intellij tiene un seguimiento leal (¿fanático?) Entre los desarrolladores de Java, por lo que puede encontrar que esto es apropiado para sus necesidades.

He visto preguntas sobre IDE aquí. ¿Cuál es el mejor IDE para el desarrollo de Scala? y ¿Cuál es el estado actual de las herramientas para Scala? , pero he tenido experiencias mixtas con IDEs. En este momento, estoy usando el IDE de Eclipse con la opción de actualización automática del espacio de trabajo, y Kate de KDE 4 como mi editor de texto. Estos son algunos de los problemas que me gustaría resolver:

  1. utilizar mi propio editor Los IDE están realmente orientados a todos los que usan sus componentes. Me gusta más Kate, pero el sistema de actualización es muy molesto (no utiliza inotify, sino un intervalo de sondeo de 10 segundos). La razón por la que no uso el editor de texto incorporado es porque las funcionalidades de autocompletar interrumpidas hacen que el IDE se cuelgue por unos 10 segundos.
  2. reconstruir solo archivos modificados El sistema de compilación Eclipse está roto. No sabe cuándo reconstruir clases. Me encuentro casi la mitad del tiempo yendo a project-> clean. Peor aún, parece que incluso después de que haya terminado de construir mi proyecto, unos minutos más tarde aparecerá un extraño error ( edit - estos errores parecen ser cosas que fueron resueltas previamente con un proyecto> clean, pero luego vuelven a subir. ..). Finalmente, configurar "Preferencias / Continuar inicio si el proyecto contiene errores" para "solicitar" parece no tener ningún efecto para los proyectos de Scala (es decir, siempre se inicia incluso si hay errores).
  3. Personalización de compilación Puedo utilizar el lanzamiento "nocturno", pero querré modificar y usar mis propias compilaciones de Scala, no el compilador integrado en el complemento del IDE. También sería bueno pasar [por ejemplo] -Xprint:jvm al compilador (para imprimir código reducido).
  4. compilación rápida Aunque Eclipse no siempre funciona correctamente, parece ágil, incluso más que fsc .

Miré a Ant y Maven, aunque aún no he empleado (también necesitaré pasar tiempo resolviendo los números 3 y 4). Quería ver si alguien tiene otras sugerencias antes de pasar tiempo trabajando en un sistema de compilación subóptimo. ¡Gracias por adelantado!

ACTUALIZACIÓN : ahora estoy usando Maven, pasando un proyecto como un complemento de compilación. Parece lo suficientemente rápido; No estoy seguro de qué tipo de almacenamiento en caché de tarros hace Maven. Un repositorio actual para Scala 2.8.0 está disponible [ link ]. Los arquetipos son geniales, y el soporte multiplataforma parece muy bueno. Sin embargo, sobre problemas de compilación, no estoy seguro de si fsc está realmente arreglado, o si mi proyecto es lo suficientemente estable (p. Ej., Los nombres de las clases no cambian). Ejecutarlo manualmente no me molesta demasiado. Si desea ver un ejemplo, siéntase libre de navegar por los archivos pom.xml que estoy usando [ github ].

ACTUALIZACIÓN 2 : de los puntos de referencia que he visto, Daniel Spiewak tiene razón en que el constructor es más rápido que Maven (y, si uno hace cambios incrementales, la latencia de 10 segundos de Maven se vuelve molesta), entonces si uno puede crear un archivo de compilación compatible, entonces probablemente vale la pena...


Bajé por el mismo camino, y aquí es donde estoy: después de una investigación inicial, dejé a Kate. Me encanta usarlo para la mayoría de las cosas, pero cuando se trata de cosas como definir las terminaciones de pestañas, me parece que falta mucho. Le recomendaría que busque en gedit, que es mucho más robusto para el desarrollo de Scala. Con gedit como editor, uso SBT y creo que es una gran herramienta de compilación. Puedo ponerlo en un modo de "prueba" donde cuando cualquier código cambia, recompila los archivos relevantes y ejecuta mi suite de pruebas. Esta ha sido una manera extremadamente efectiva de trabajar.

No he echado un vistazo a Buildr todavía. Me gustaría decir que lo haré, pero sinceramente, con SBT a mi disposición, realmente no tengo una necesidad imperiosa de mirar a otra herramienta de compilación.


La última versión del plugin Maven Scala admite Zinc / Nailgun para tiempos de inicio más rápidos y compilaciones incrementales más rápidas. Ver Zinc y compilación incremental .


Los puntos 2 y 4 son extremadamente difíciles de manejar con el scalac actual. El problema es que el compilador de Scala es un poco tonto al compilar archivos. Básicamente, generará lo que sea que alimentes, independientemente de si ese archivo realmente necesita ser creado o no. Scala 2.8.0 tendrá algunas mejoras tremendas en este sentido, pero hasta entonces ... Eclipse SDT en realidad tiene un código muy elaborado (y muy hackish) para hacer detección de cambios y seguimiento de dependencia. En general, hace un trabajo decente, pero como has visto, hay arrugas. Eclipse SDT 2.8.0 confiará en las mejoras antes mencionadas de Scalac.

Por lo tanto, construir archivos modificados es prácticamente imposible. Aparte de SDT, la única herramienta que conozco que incluso intenta esto es SBT ( Simple Build Tool ). Utiliza un complemento de compilación para rastrear los archivos a medida que se compilan y consultar el gráfico de dependencia calculado por el propio compilador. En la práctica, esto produce aproximadamente una mejora del 50% sobre el enfoque de recompilación del mundo. Una vez más, este es un truco para sortear las deficiencias en Scalac anterior a la 2.8.0.

La buena noticia es que la compilación razonablemente rápida aún se puede lograr incluso sin preocuparse por la detección de cambios. FSC usa la misma tecnología (ooh, que sonaba tan "Charlie Eppes") que Eclipse SDT usa para implementar una compilación incremental rápida. En resumen, es bastante ágil.

Personalmente, uso Apache Buildr . Su configuración es significativamente más limpia que la de Maven o SBT y su tiempo de inicio es de órdenes de magnitud menor (cuando se ejecuta bajo MRI). Se integra con FSC e intenta hacer algo de detección de cambio básico por sí mismo (bastante primitivo). También tiene soporte auto-mágico para los principales marcos de prueba de Scala (ScalaTest, ScalaCheck y Specs), así como soporte para compilación conjunta con fuentes Java y meta generación de IDE para IntelliJ y Eclipse. Ah, y es compatible con todas las características de Maven (resolución de dependencia, etc.) y algo más. Incluso estoy trabajando en una extensión que permitiría el soporte de shell interactivo integrado con JavaRebel y el soporte de varios proveedores de shell (Scala, JIRB, Clojure REPL, etc.). Todavía no está listo para el SVN, pero lo confirmaré una vez que esté listo (posiblemente a tiempo para 1.3.5).

Como pueden ver, estoy firmemente de la opinión de que Buildr es la mejor herramienta de construcción de Scala que existe. Su documentación es un poco irregular en lo que respecta a Scala, pero eso se debe a que todo es tan directo que es difícil documentarlo sin sentirse prolijo. Siempre puedes ver uno de mis repositorios de GitHub para ver ejemplos. ¡Buena suerte!


Por razones de integridad, debo decir que también hay Pants , la herramienta de construcción que se usa en Twitter (uno de los primeros adoptantes de Scala)

La principal diferencia es que está destinado no solo para scala (y escrito en python, por cierto) y se modela después del sistema de compilación de google .

No está tan hinchado como sbt, por lo que para los principiantes es mucho más sencillo, pero nunca escuché sobre el uso de Pantalones fuera de twitter y foursquare.

Si tienes miedo de SBT, ¿tal vez otra herramienta de construcción no tan popular, ABT , podría ser una alternativa para ti?


Si desea usar Eclipse, pero construya el proyecto usando sbt y aún pueda depurar, eche un vistazo a esta publicación aquí:

zikaprog.wordpress.com/2010/04/19/scala-eclipse-sbt-and-debugging/

También se puede aplicar a constructores que no sean sbt.


Si usa Emacs, creo que Ensime es un IDE bastante bueno. Creo que en el momento de escribir, Ensime es el único IDE que le dará una autocompletación rápida y precisa tanto en objetos de Scala como de Java, incluidas las conversiones implícitas.

Hay soporte de navegación de código usando la barra de velocidad, plantillas de código usando el excelente Yasnippet, y el menú de finalización de código usando Autocompletar. Todos estos son paquetes de Emacs muy modernos y mantenidos activamente. También hay soporte de construcción incremental fuera de la caja para Maven y SBT.

Hay mucho más allí, como la depuración interactiva, la refactorización y el intérprete de Scala en un proceso inferior. Todo lo que quieres en un IDE moderno para Scala ya está disponible en Ensime. Muy recomendado para Emacsens.


También estoy bastante frustrado con el plugin scala en Eclipse y puedo agregar algunos más problemas a la lista:

  • autocompletar solo funciona parte del tiempo
  • el depurador no funciona correctamente (especialmente al intentar depurar scala xml)
  • el depurador olvida los puntos de interrupción
  • ''ir a definición'' no funciona más de las veces.

Me complace escuchar que Buildr suena como una mejor alternativa (en el frente de la construcción de todos modos), voy a intentarlo, ¡gracias!