34 votes

Comment utiliser IntelliJ avec Play Framework et Scala

Je suis en train d'utiliser l'Ide, avec un jeu-cadre 2.11 application.

J'ai installé le Jeu Framework 2 plugin et de la Scala plugin pour IntelliJ.

J'ai créé un Jeu de l'application. J'ai été aux prises l'écriture et l'exécution des Specs 2 tests à l'Ide. Ma course config dit à exécuter à "faire" le premier lors de l'exécution de l'Spécifications 2 test, toutefois, il ne ressemble pas à mes classes de test sont générées. Garde en me disant qu'il ne pouvait pas trouver les spécifications. Quand je regarde sur le système de fichiers, il n'y a pas de code cible/test-classes, le répertoire est vide. De plus, il semble prendre beaucoup de temps pour faire construire, au moins par rapport à l'exécution de la Jouer à la console.

Je voulais voir comment les gens utilisent de Jouer avec IntelliJ. Ne vous utilisez simplement l'Ide en tant que rédacteur, et courir à travers tout le Jeu de la console?

Est-il un moyen par lequel vous pouvez exécuter votre Application de tests à l'Ide (l'obtention de vos classes de test run)?

Je n'ai jamais eu de problème à l'exécution de la Jouer à la console et en cours d'exécution ~test-tester=xxx.Spec. Il a généralement été plutôt rapide.

Ici est l'exception, je suis dans l'Ide, lorsque j'essaie de lancer mon Specs2 tests:

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

56voto

akkie Points 1122

IntelliJ IDEA a une bonne intégration pour les Play Framework 2. Parfois il se bloque, mais la plupart du temps, il s'exécute. Je l'utilise pour courir(unique) des tests, de démarrer ou de déboguer l'application lecture et de modifier mon code (o; Et ce à partir de l'IDE et sans que le tribunal de la console.

Voici un court tutoriel avec des étapes les plus importantes. Actuellement, je utiliser IntelliJ IDEA 12.1 avec le nouveau Jeu Framework 2 et Scala plugins.

1. Créer une nouvelle application

play new myapp

2. Créer le module IDE

Démarrez le jeu de la console:

cd newapp
play

Créer le module:

idea with-sources=yes
exit

3. Configurer l'IDE

  1. Ouvrez le projet nouvellement créé
  2. Ouvrez les paramètres de module(sélectionnez le projet et appuyez sur F4)
  3. Ajouter la Scala de la bibliothèque de votre projet
    1. Sélectionnez les Modules->myapp->Dépendances
    2. Appuyez sur l'Icône et sélectionnez Bibliothèque(2)
    3. Ajouter la Scala 2.10.0 Projet de la Bibliothèque
  4. Sélectionnez la Bibliothèque de Compilateur dans le Scala Facette
    1. Sélectionnez Facettes->Scala(myapp)
    2. Définir la bibliothèque de Compilateur Scala 2.10.0
  5. Corriger les erreurs
    1. Sélectionnez les Modules->myapp-build->Dépendances->scala-2.9.2 et appuyez sur l'icône "moins"
    2. Sélectionnez les Bibliothèques->Scala 2.9.2 et appuyez sur l'icône "moins"
  6. Fixer le Chemin de sortie pour le myapp-buildmodule
    1. Sélectionnez les Modules->myapp-build->Chemins
    2. Ajouter des classes pour le chemin de Sortie(X:\projects\myapp\project\target\scala_2.9.2\classes)
    3. Ajouter test-classes pour l' Essai de sortie de voie(X:\projects\myapp\project\target\scala_2.9.2\test-classes)

4. Exécuter un test

Sélectionnez la ApplicationSpec sous le répertoire de test et cliquez sur Exécuter 'ApplicationSpec' dans le menu contextuel. Vous devriez obtenir une erreur que le modèle compilé n'a pas pu être trouvé. C'est parce que l'IDE ne compile pas les modèles, mais cela peut être fait par exécuter l'application une fois. Également suivre le point 5, puis exécutez à nouveau le test.

5. Exécuter l'application

Sélectionnez un contrôleur et cliquez sur Run Jeu 2 Application à partir du menu contextuel. Cela devrait démarrer l'application à l'adresse: http://localhost:9000/.

6. Mise à jour des dépendances

Si vous mettez à jour votre les dépendances de l'application, alors vous devez dire à l'IDE à propos de ce changement. Aussi après l'exécution de la mise à jour jouer de commande, vous devez fermer l'IDE et de supprimer certains fichiers de répertoire de projet. Si vous exécutez l' play idea commande avant de supprimer les fichiers, vous obtenez le double des dépendances dans votre jouer au projet.

Exécuter les étapes suivantes pour mettre à jour vos dépendances:

  1. Exécutez l' update de la tâche à partir de votre jeu de la console
  2. Supprimer l' .idea_modules et .idea/libraries annuaires
  3. Exécutez l' idea with-sources=yes de commande dans le jeu de la console
  4. Exécutez à nouveau l'étape 3

3voto

Yeonho Points 1220

Jouer à la console comprend une fourche d'un sbt plugin nommé sbt-idée. Le jeu de la fourche suis un peu à la traîne de l'original plug-in, et a quelques problèmes à l'Ide, lorsque vous exécutez play idea. Vous pouvez utiliser le plugin original, ce qui ne veut pas avoir de problèmes. Pour utiliser ce plugin dans votre jouer au projet, vous devez..

1.Ajoutez les lignes suivantes en project/plugins.sbt le fichier: (la ligne vide dans le milieu est requis)

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

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

2.Exécutez gen-idea de la jouer à la console.

0voto

Wayan Wiprayoga Points 1909

J'ai l'habitude utilisé IntellijIDEA (version 12.0.4) uniquement pour Jouer Cadre de l'éditeur de code, en raison de:

  1. Auto fonctionnalité de sauvegarde par défaut
  2. Plutôt rapide fonctionnalité IntelliSense
  3. Dracula de l'INTERFACE utilisateur, c'est un eye-plaisir pour moi

Et j'ai l'habitude d'exécuter et de déboguer les applications avec le Jeu SBT console. C'est rapide raisonnable. Mais, parfois, lors de l'exécution d' play de commande sur console, je trouve que le chargement-projet-info tâche de prendre trop de temps (près de 10 minutes). Je ne sais pas pourquoi cela arrive parfois, mais dans l'ensemble l'utilisation du Jeu SBT console, c'est mon choix.

Je suis en train de faire, car il y a généralement doit-pas-être-le-problème-les choses intepreted comme d'erreur comme suit :

IDEA Error

La première fois quand j'ai commencer à apprendre à Jouer du Cadre, j'ai été confronté à un tel problème. Ainsi, à la fin, j'ai choisi d'utiliser Jouer SBT de la console pour l'exécution et le débogage d'application.

Et désolé, je ne peux pas répondre pour la question numéro 2. Jusqu'à présent, j'ai seulement essayé d'exécution et de débogage de jouer de l'application. Pour fins de test, je n'ai jamais essayé avant pour Jouer à 2.x.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X