para - intellijidea scala
Cómo usar IntelliJ con Play Framework y Scala (3)
La consola Play incluye un tenedor de un plugin sbt-idea llamado sbt-idea . La horquilla de la jugada quedó un poco rezagada detrás del plugin original, y tiene algunos problemas en IntelliJ cuando ejecutas play idea
. Puede usar el complemento original, que no tiene ningún problema. Para utilizar este complemento en tu proyecto de juego, debes ...
1.Agregue las siguientes líneas al archivo project/plugins.sbt
: (se requiere la línea en blanco en el medio)
resolvers += "Sonatype snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/"
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.1")
2. Ejecuta gen-idea
desde la consola de reproducción.
Estoy tratando de usar IntelliJ con una aplicación de play framework 2.11.
Instalé el plugin Play Framework 2 y el plugin Scala para IntelliJ.
Creé una aplicación Play. He estado luchando por escribir y ejecutar pruebas Specs 2 en IntelliJ. Mi configuración de ejecución dice que ejecute "make" primero cuando se ejecuta la prueba de Specs 2, sin embargo, no parece que se generen mis clases de prueba. Sigue diciéndome que no pudo encontrar la especificación. Cuando miro en el sistema de archivos, no hay código en target / test-classes, el directorio está vacío. Además, parece tomar mucho tiempo hacer la construcción, al menos en comparación con la ejecución de la consola Play.
Quería ver cómo las personas están usando Play with IntelliJ. ¿Utiliza IntelliJ como editor y ejecuta todo a través de la consola Play?
¿Hay alguna forma de ejecutar las pruebas de aplicación en IntelliJ (para que se ejecuten las clases de prueba)?
Nunca tuve problemas para ejecutar la consola Play y ejecutar ~ test-only test = xxx.Spec. Por lo general, ha sido bastante rápido.
Esta es la excepción que recibo en IntelliJ cuando intento ejecutar mis pruebas de Specs2:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.jetbrains.plugins.scala.testingSupport.specs2.JavaSpecs2Runner.runSingleTest(JavaSpecs2Runner.java:130)
at org.jetbrains.plugins.scala.testingSupport.specs2.JavaSpecs2Runner.main(JavaSpecs2Runner.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.RuntimeException: can not create specification: test.ApplicationSpec
at scala.sys.package$.error(package.scala:27)
at org.specs2.specification.SpecificationStructure$.createSpecification(BaseSpecification.scala:96)
at org.specs2.runner.ClassRunner.createSpecification(ClassRunner.scala:64)
at org.specs2.runner.ClassRunner.start(ClassRunner.scala:35)
at org.specs2.runner.ClassRunner.main(ClassRunner.scala:28)
at org.specs2.runner.NotifierRunner.main(NotifierRunner.scala:24)
... 11 more
Normalmente usé IntellijIDEA (versión 12.0.4) solo para el editor de código de Play Framework debido a:
- Función de guardado automático por defecto
- Característica bastante rápida de IntelliSense
- Drácula UI, es un placer visual para mí
Y generalmente ejecuto y depuro las aplicaciones con la consola Play SBT. Es razonable rápido. Pero, a veces, al ejecutar el comando play
en la consola, descubrí que la tarea de cargar información del proyecto lleva demasiado tiempo (casi 10 minutos). No sé por qué a veces sucede esto, pero en general el uso de la consola Play SBT es mi elección.
Lo hago porque generalmente hay cosas que no deberían ser el problema que se interpretan como un error como el siguiente:
La primera vez que empiezo a aprender Play Framework me enfrentaba a ese problema. Entonces, al final, elijo usar la consola Play SBT para ejecutar y depurar la aplicación.
Y lo siento, no puedo responder a la pregunta número 2. Hasta ahora solo intenté ejecutar y depurar la aplicación de reproducción. Para fines de prueba, nunca antes lo había intentado para Play 2.x.
Actualización : en versiones más nuevas si IntelliJ IDEA, ya no es necesario crear el módulo desde play / activator. IntelliJ IDEA tiene ahora un apoyo realmente bueno para los proyectos de SBT. Si existe, elimine todos los directorios relacionados con la idea dentro de su proyecto. Luego, en IntelliJ IDEA, haga clic en Archivo -> Abrir y elija su archivo build.sbt. Eso es todo.
IntelliJ IDEA tiene una buena integración para Play Framework 2. A veces se bloquea, pero la mayor parte del tiempo se ejecuta. Lo uso para ejecutar (solo, todas) las pruebas, iniciar o depurar la aplicación de reproducción y editar mi código (o; y todo esto desde dentro del IDE y sin la consola de sbt.
Aquí hay un breve tutorial con los pasos más importantes. Actualmente uso IntelliJ IDEA 12.1 con los más recientes complementos de Play Framework 2 y Scala.
1. Crea una nueva aplicación
play new myapp
2. Crea el módulo IDE
Inicie la consola de reproducción:
cd newapp
play
Crea el módulo:
idea with-sources=yes
exit
3. Configure el IDE
- Abra el proyecto recién creado
- Abra la configuración del módulo (seleccione proyecto y presione F4)
- Agregue la biblioteca de Scala a su proyecto
- Seleccionar módulos-> myapp-> Dependencias
- Presiona el ícono más y selecciona Biblioteca (2)
- Agregue la Biblioteca de proyectos Scala 2.10.0
- Seleccione la biblioteca del compilador en Scala Facet
- Seleccione Facetas-> Scala (myapp)
- Establezca la biblioteca del compilador en Scala 2.10.0
- Corrige los errores
- Seleccione Módulos-> myapp-build-> Dependencias-> scala-2.9.2 y presione el ícono de menos
- Seleccione Bibliotecas-> Scala 2.9.2 y presione el ícono de menos
- Repara la ruta de salida para el módulo myapp-build
- Seleccione Módulos-> myapp-build-> Rutas
- Anexar clases a la ruta de salida (X: / projects / myapp / project / target / scala_2.9.2 / classes)
- Anexar clases de prueba a la ruta de salida de prueba (X: / projects / myapp / project / target / scala_2.9.2 / test-classes)
4. Ejecuta una prueba
Seleccione ApplicationSpec en el directorio de prueba y haga clic en Ejecutar ''ApplicationSpec'' en el menú contextual. Debería obtener un error que la plantilla compilada no se pudo encontrar. Esto se debe a que el IDE no compila las plantillas, pero esto se puede hacer ejecutando la aplicación una vez. También siga el punto 5 y luego ejecute la prueba nuevamente.
5. Ejecute la aplicación
Seleccione un controlador y haga clic en la aplicación Run Play 2 en el menú contextual. Esto debería iniciar la aplicación en la dirección: http://localhost:9000/
.
6. Actualizar dependencias
Si actualiza las dependencias de su aplicación, debe informar al IDE acerca de estos cambios. Además, después de ejecutar el comando play update , debe cerrar el IDE y eliminar algunos archivos del directorio del proyecto. Si ejecuta el comando play idea
antes de eliminar los archivos, obtiene dependencias dobles en su proyecto de juego.
Ejecute los siguientes pasos para actualizar sus dependencias:
- Ejecute la tarea de
update
desde su consola de reproducción - Elimine los
.idea_modules
y.idea/libraries
- Ejecute la
idea with-sources=yes
comandoidea with-sources=yes
en la consola de reproducción - Ejecuta el paso 3 otra vez