¿Cómo crear un proyecto SBT con IntelliJ Idea?

146

Acabo de comenzar a desarrollar Scala / LiftWeb / Sbt, y me gustaría importar un proyecto Sbt en IntelliJ Idea. En realidad, logré importar mi proyecto de dos maneras diferentes:

1) con Maven. Creé un proyecto Maven, y además creé un proyecto Sbt, que luego importé en IntelliJ. Entonces podría comenzar fácilmente, detener el servidor del muelle y hacer otras cosas. Pero eso no es lo que quiero. Quiero hacer lo mismo, solo sin Maven. Eso me llevó a

2) con Eclipse. Entonces, creé un nuevo proyecto Sbt (con un pequeño script que escribí, configurando el proyecto Sbt para que sea un Proyecto Web). Luego utilicé el complemento sbt-eclipsify para 'convertir' el proyecto para Eclipse, que luego importé en IntelliJ (fuente existente -> eclipse). Pero los problemas comenzaron aquí: no puedo hacer que el complemento IntelliJ Sbt funcione.

Puede alguien ayudarme con esto?

ksemeks
fuente
Para alguien que necesita una respuesta rápida o si es un requisito urgente, simplemente vaya a github y encuentre un proyecto de escala simple. Descargue y luego importe en su IDE. Debería poder acceder al proyecto scala. Happy time
un usuario el

Respuestas:

170

Hay tres formas básicas de cómo crear un proyecto: las versiones modernas de IntelliJ pueden importar el proyecto sbt de forma inmediata; de lo contrario, puede usar el complemento sbt para generar el proyecto IntelliJ o usar el complemento IntelliJ Scala para crear un proyecto sbt. Las funciones básicas funcionan de forma inmediata utilizando ambas soluciones, algunas compilaciones complejas pueden tener problemas, así que pruebe otras herramientas para ver si funciona allí.

IntelliJ

IntelliJ IDEA ha mejorado mucho en estos días. La versión actual (14.0.2) admite proyectos sbt listos para usar con el complemento Scala. Simplemente instale el complemento y debería poder abrir proyectos Scala / sbt sin ningún problema.

Complemento Scala en Complementos en Preferencias

Con el complemento, solo apunte a un proyecto sbt e IDEA le ofrecerá un asistente para abrir ese tipo de proyecto.

Importar proyecto sbt

IntelliJ Scala Plugin

El complemento IntelliJ se puede encontrar aquí http://confluence.jetbrains.com/display/SCA/Scala+Plugin+for+IntelliJ+IDEA o se puede instalar directoly desde el IDE usando Configuración -> diálogo Complementos. Luego, uno puede hacer File -> New Project -> Scala -> SBT based. IntelliJ generará build.sbt básico, descargará las dependencias necesarias y abrirá el proyecto.

SBT Plugin

El complemento Sbt que genera un proyecto de idea basado en los archivos sbt se puede encontrar aquí: https://github.com/mpeltonen/sbt-idea

SBT 12.0+ y 13.0+

Simplemente agregue addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.2")a su build.sbt; No se necesitan resolvers adicionales.

Versiones mas antiguas:

SBT 0.11+

Cree y agregue las siguientes líneas a ~/.sbt/plugins/build.sbtORPROJECT_DIR/project/plugins.sbt

resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")

Use gen-ideaen sbt para crear archivos de proyecto IDEA.

Por defecto, los clasificadores (es decir, fuentes y javadocs) de sbt y las dependencias de la biblioteca se cargan si se encuentran y se agregan referencias a los archivos de proyecto IDEA. Si no desea descargar / referenciarlos, use el comando gen-idea no-classifiers no-sbt-classifiers.


SBT 0.10.1 (según el autor del complemento, ¡0.10.0 no funcionará!)

Cree y agregue las siguientes líneas a ~ / .sbt / plugins / build.sbt:

resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

libraryDependencies += "com.github.mpeltonen" %% "sbt-idea" % "0.10.0"

Use la gen-ideatarea sbt para crear archivos de proyecto IDEA.

Por defecto, los clasificadores (es decir, fuentes y javadocs) de sbt y las dependencias de la biblioteca se cargan si se encuentran y se agregan referencias a los archivos de proyecto IDEA. Si no desea descargar / referenciarlos, use el comando gen-idea no-classifiers no-sbt-classifiers.


SBT 0.7

Para usarlo, simplemente ejecute esto desde su shell sbt, usará el complemento como un programa externo:

 > *sbtIdeaRepo at http://mpeltonen.github.com/maven/
 > *idea is com.github.mpeltonen sbt-idea-processor 0.4.0
 ...
 > update
 ...
 > idea
 ...

También puede agregar un rasgo en la definición de su proyecto, como desee:

import sbt._
class MyProject(info: ProjectInfo) extends ParentProject(info) with IdeaProject {
  lazy val mySubProject = project("my-subproject", "my-subproject", new DefaultProject(_) with IdeaProject)
   // ...
}
Steve Gury
fuente
44
Soy un converso total a este complemento. Úselo en combinación con la idea-sbt-plugin, que le permite delegar la construcción de su proyecto a SBT, y use SBT de manera interactiva desde una ventana de herramientas en IDEA. La versión 0.2.0-SNAPSHOT de sbt-idea corrige algunas pequeñas molestias: la creación de un proyecto principal y la preservación de la configuración manual de IntelliJ.
retrónimo el
Gracias por este complemento. Realmente es helfpul!
ksemeks
44
Retracto mi respuesta. Este es un gran complemento y ahora lo uso cada vez.
Synesso el
1
Agregué una respuesta para SBT 0.10.0, que es completamente diferente a SBT 0.7.x + stackoverflow.com/questions/4250318/…
opiate
Gracias opyate, he actualizado mi puesto de acuerdo con su comentario
Steve Gury
11

Por ahora hago esto a mano. Es bastante simple.

  1. Crea el proyecto con SBT
  2. Cree un nuevo proyecto IDEA con la misma ruta raíz
  3. Cree un módulo con la misma ruta raíz
  4. Establezca src / main / scala como una ruta src en el módulo
  5. Establecer src / test / scala como ruta de prueba en el módulo
  6. Agregue scala-library.jar como biblioteca
  7. Agregue lib (si está presente) como un directorio jar dentro de una biblioteca de módulos
  8. Agregue lib_managed / compile (si está presente) como un directorio jar dentro de una biblioteca de módulos
  9. Agregue lib_managed / test (si está presente) como un directorio jar dentro de una biblioteca de módulos

Eso es todo de memoria. Sería mejor si fuera automatizado, pero no es gran cosa como lo es ahora.

Una nota de precaución: el enfoque anterior no funciona bien con new-school sbt, es decir, las versiones 0.10 y posteriores, porque no copia las dependencias en lib_managed por defecto. Puedes añadir

retrieveManaged := true

a su build.sbt para hacer que copie las dependencias en lib_managed.

Synesso
fuente
Pero, ¿comienzas tu proyecto (embarcadero) desde IntelliJ o desde una terminal? No puedo configurar el lanzador / compilador de proyectos desde el IDE.
ksemeks el
Una cosa más: hice todo lo que escribiste, pero IntelliJ dice "No se puede resolver el símbolo ne" para la importación "import net.liftweb.LiftRules"
ksemeks
Me las arreglé para sortear la importación. Tuve que importar / lib_managed / compile en lugar de / lib_managed
ksemeks el
66
¡Respuesta retraída! Use el complemento sbt-idea.
Synesso
7

Tempus Fugit e IntelliJ IDEA se han vuelto mucho mejores en estos días. Es 2015 después de todo, ¿no?

Dicho esto, la última versión de IntelliJ IDEA 14.0.2 admite proyectos sbt listos para usar con el complemento Scala . Simplemente instale el complemento y debería poder abrir proyectos Scala / sbt sin muchos problemas.

Complemento Scala en Complementos en Preferencias

Estoy usando la versión de acceso temprano del complemento que es 1.2.67.6.EAP en el momento de la escritura.

Con el complemento solo apunte a un proyecto sbt e IDEA le ofrecerá un asistente para abrir ese tipo de proyecto.

Importar proyecto sbt

Acerca de sbt-idea en sbt 0.12.4

Para SBT 0.12.4 el archivo de configuración del plugin de todo el sistema - ~/.sbt/plugins/build.sbto PROJECT_DIR/project/plugins.sbt- debe tener las siguientes líneas:

resolvers += "Sonatype snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/"

addSbtPlugin(dependency="com.github.mpeltonen" % "sbt-idea" % "1.5.0-SNAPSHOT")

correr sbt gen-idea para generar archivos de proyecto IDEA.

Lea el sitio web del complemento sbt-idea para obtener más información actualizada. También puede encontrar útil mi entrada de blog Importar proyecto basado en sbt a IntelliJ IDEA 13 (con sbt-idea, Scala 2.11 y sbt 0.12) .

Jacek Laskowski
fuente
Al crear un nuevo proyecto. Después de sbt gen-idea, el proyecto está vacío. Sin estructura, no src, carpeta de prueba. Y es poco convincente ..
ses
¿Cómo creaste el proyecto? ¿Cuál es la estructura del directorio y los archivos dentro?
Jacek Laskowski
Solo está vacío. Tuve que crearlo "main / scala / src" con las manos. Pero puedo vivir con eso.
ses
Es posible que desee utilizar github.com/n8han/giter8 como un medio de arranque de un proyecto sbt. sbt puede tener un directorio vacío ya que el proyecto principal y main / scala / src no son necesarios, simplemente coloque sus archivos Scala en el directorio principal para que sbt los elija.
Jacek Laskowski
5

Para sbt 0.7

Vea la respuesta en otra parte de esta página .

Para sbt 0.10

Clonar y construir la idea sbt de Ismael:

git clone https://github.com/ijuma/sbt-idea.git
cd sbt-idea
git checkout sbt-0.10
./sbt package

Cree un directorio lib de sbt plugin si aún no tiene uno

mkdir -p  ~/.sbt/plugins/lib

Copie el frasco construido en el paso uno aquí

cp sbt-idea/target/scala-2.8.1.final/*.jar ~/.sbt/plugins/lib

Reinicie o vuelva a cargar sbt, luego puede ejecutar gen-idea(o gen-idea with-classifierssi desea fuentes y javadoc en intelliJ también)

Fuente: sugerencia de Tackers sobre el grupo de mensajes .

En IntelliJ IDEA 13.x sí mismo

Puede abrir un proyecto basado en SBT en IDEA hoy en día. Creará el proyecto y los módulos necesarios, y mantendrá sus dependencias actualizadas cada vez que realice cambios en los scripts de compilación.

opiato
fuente
2

Acabo de pasar por todo este dolor. Paso días tratando de crear un entorno aceptable y he llegado a la conclusión de que ENSIME, SBT y JRebel serán mi entorno de desarrollo durante algún tiempo. Sí, está volviendo a Emacs, pero ENSIME lo convierte en un poco o una idea con refactorización, soporte de depuración, navegación, etc. No es tan bueno como Eclipse (Java), pero a menos que los complementos de Scala funcionen mejor, es el lo mejor que tenemos

Hasta que los entornos de desarrollo de Scala lleguen al tabaco (Eclipse o IntelliJ), no me voy a molestar. Son demasiado con errores.

Vea la discusión en el sitio del ascensor.

http://groups.google.com/group/liftweb/browse_thread/thread/6e38ae7396575052#

Dentro de ese hilo, hay un enlace a un CÓMO para IntelliJ, pero aunque funciona, hay muchos problemas que lo hacen un poco menos útil.

http://blog.morroni.com/2010/07/14/setup-intellij-9-for-lift-framework-development/comment-page-1/

andyczerwonka
fuente
Ya lo lei. Este artículo usa maven, que logré poner a trabajar. Estoy tratando de hacer lo mismo ahora, solo con sbt, sin maven.
ksemeks el
Puedo configurar el proyecto para que IntelliJ lo use, pero no puedo poner en funcionamiento el compilador / lanzador sbt.
ksemeks el
En lo que respecta a ENSIME: ¿es fácil trabajar? Lo intenté una vez, pero nunca trabajé con emacs, así que fue un poco difícil para mí. ¿Trabajar con emacs es una premisa?
ksemeks el
El siguiente enlace lo llevará a través de una configuración SBT. Esto funcionó para mí, pero de nuevo trabajar con SBT e IntelliJ de una manera no integrada es realmente como usar dos herramientas separadas, que ENSIME con SBT es mucho más natural. heikoseeberger.blogspot.com/2010/08/…
andyczerwonka
2

Las respuestas son antiguas para 2014. En IntelliJ 13.x , el complemento Scala es la versión 0.41.2 (se incluye SBT).

Mi versión SBT es 0.13.5 (terminal: sbt sbtVersion )

Vaya a la carpeta raíz del proyecto e ingrese en la terminal

sbt idea

Verá dos nuevas carpetas ocultas .idea y .idea_modules .

Luego, en IntelliJ, Archivo> Abrir> seleccione el proyecto. Debe abrir el proyecto sin ningún problema.

Raymond Chenon
fuente