Comment utiliser IntelliJ avec Play Framework et Scala

j'essaie D'utiliser IntelliJ avec une application play framework 2.11.

j'ai installé le plugin Play Framework 2 et le plugin Scala pour IntelliJ.

j'ai créé une application Play. J'ai eu du mal à écrire et à faire des tests Specs 2 à IntelliJ. Ma config run dit d'exécuter "make" en premier lors de L'exécution du test Specs 2, mais il ne semble pas que mes classes de test soient générées. Il n'arrête pas de me dire qu'il n'a pas pu trouver la spécification. Quand J' 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 qu'il faille beaucoup de temps pour faire la compilation, du moins par rapport à la console de jeu.

je voulais voir comment les gens utilisent Play avec IntelliJ. Utilisez-vous IntelliJ comme éditeur, et lancez-vous tout sur la console de jeu?

y a-t-il un moyen d'exécuter vos tests D'Application dans IntelliJ (faire exécuter vos cours de test)?

j'ai aucun problème d'exécution de la console de jeu et d'exécution ~test-only test = xxx.Spec. Il a généralement été plutôt rapide.

Voici l'exception que je reçois dans IntelliJ quand j'essaie d'exécuter mes tests 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
34
demandé sur kiritsuku 2013-04-22 00:13:20

3 réponses

mise à Jour: dans les versions plus récentes si IntelliJ IDEA, il n'est plus nécessaire de créer le module à partir de play/activator. IntelliJ IDEA a maintenant un très bon soutien pour les projets SBT. S'il existe, supprimez tous les répertoires relatifs à l'idée à l'intérieur de votre projet. Puis dans IntelliJ IDEA cliquez Fichier - > Ouvrir et choisissez votre construction.fichier sbt. C'est tout.


IntelliJ idée a une bonne intégration pour le cadre de jeu 2. Parfois il se bloque, mais la plupart du temps il s'exécute. Je l'utilise pour lancer(un, tous) des tests, démarrer ou déboguer l'application play et éditer mon code (o; et tout cela à partir de L'IDE et sans la console sbt.

voici un petit tutoriel avec les étapes les plus importantes. J'utilise actuellement IntelliJ IDEA 12.1 avec les plugins Play Framework 2 et Scala les plus récents.

1. Créer une nouvelle application

play new myapp

2. Créer le module IDE

démarrer la pièce console:

cd newapp
play

création du module:

idea with-sources=yes
exit

3. Configurer L'IDE

  1. Ouvrir le projet nouvellement créé
  2. ouvrez les paramètres du module (sélectionnez project et appuyez sur F4)
  3. ajouter la bibliothèque Scala à votre projet
    1. Sélectionner Modules->myapp->Dépendances
    2. appuyez sur L'icône plus et sélectionnez Bibliothèque (2)
    3. ajouter le projet Scala 2.10.0 Bibliothèque
  4. sélectionnez la bibliothèque de compilateurs dans la facette Scala
    1. Sélectionner facettes - > Scala (myapp)
    2. mettez le bibliothèque de compilateurs à la Scala 2.10.0
  5. Corriger les erreurs
    1. Sélectionner Modules->myapp-build->Dépendances->scala-2.9.2 et appuyez sur l'icône "moins"
    2. Sélectionner Bibliothèques - > Scala 2.9.2 et appuyez sur le signe moins icône
  6. Correction du chemin de sortie pour le myapp-build module
    1. Sélectionner Modules - > myapp-build - >Paths
    2. Append classeschemin de Sortie (X:\projects\myapp\project\target\scala_2.9.2\classes)--37-->
    3. Append test-classes résultats des essais chemin d'accès (X:\projects\myapp\project\target\scala_2.9.2\test-classes)--37-->

4. Exécuter un test

Sélectionnez ApplicationSpec sous le répertoire test et cliquez sur Exécuter 'ApplicationSpec' à partir du 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 en lançant l'application Une fois. Également suivre point 5, puis recommencer le test.

5. Exécutez l'application

Sélectionnez un contrôleur et cliquez sur Exécuter Jouer 2 App à 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 vos dépendances d'application, vous devez en informer L'IDE. Aussi après l'exécution de l' lire la mise à jour commande, vous devez fermer L'IDE et supprimer certains fichiers du répertoire du projet. Si vous exécutez l' play idea commande avant de supprimer les fichiers, vous obtenez des dépendances doubles dans votre projet play.

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

  1. exécutez le update tâche de votre console de jeu
  2. Supprimer .idea_modules et .idea/libraries annuaires
  3. exécutez le idea with-sources=yes commande dans la console de jeu
  4. courir étape 3
56
répondu akkie 2015-03-18 07:17:55

la console de jeu inclut une fourche d'un plugin sbt nommé sbt-idée. The play's fork est un peu en retard sur le plugin original, et a quelques problèmes avec IntelliJ quand vous exécutez play idea. Vous pouvez utiliser le plugin original, qui n'a aucun problème. Afin d'utiliser ce plugin dans votre projet de jeu, vous devez le faire..

1.Ajoutez les lignes suivantes project/plugins.sbt file: (la ligne blanche au milieu est requise)

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 dans le jeu console.

3
répondu Yeonho 2013-08-21 01:36:53

J'ai habituellement utilisé IntellijIDEA (version 12.0.4) seulement pour l'éditeur de CODE Framework Play à cause de:

  1. fonction d'enregistrement automatique par défaut
  2. plutôt rapide fonction 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 commande sur la console, j'ai trouvé que l' chargement-project-info la tâche de prendre la temps trop long (près de 10 minutes). Je ne sais pas pourquoi cela arrive parfois, mais dans l'ensemble, L'utilisation de la console SBT Play est mon choix.

je fais cela parce qu'il y a habituellement doit-pas-être-le-problème-les choses integrated as erreur comme suit :

IDEA Error

la première fois que je commence à apprendre le cadre de jeu, je faisais face à un tel problème. Donc, à la fin, j'ai choisi D'utiliser la console de jeu SBT pour exécuter et déboguer l'application puis.

et désolé Je ne peux pas répondre à la question numéro 2. Jusqu'à présent, je n'ai essayé que d'exécuter et de déboguer l'application play. Pour tester, Je n'ai jamais essayé pour Play 2.x.

0
répondu Wayan Wiprayoga 2013-04-22 01:52:00