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 du mal à écrire et à exécuter des tests Specs 2 dans IntelliJ. Ma configuration d'exécution 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. Continue de me dire qu'il n'a pas pu trouver la spécification. Quand je regarde sur le système de fichiers, il n'y a pas de code dans les classes target/test, le répertoire est vide. De plus, cela semble prendre beaucoup de temps pour faire la construction, au moins par rapport à l'exécution de la console Play.
Je voulais voir comment les gens utilisent Play avec IntelliJ. Utilisez-vous simplement IntelliJ en tant qu'éditeur et exécutez tout via la console Play?
Existe-t-il un moyen d'exécuter vos tests d'application dans IntelliJ (faire fonctionner vos classes de test)?
Je n'ai jamais eu de problème en exécutant la console Play et en exécutant ~ test-only test = xxx.Spec. Cela a généralement été assez rapide.
Voici l'exception que j'obtiens dans IntelliJ lorsque 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
pdate: 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 support pour les projets SBT. S'il existe, supprimez tous les répertoires liés aux idées dans votre projet. Puis dans IntelliJ IDEA cliquez sur Fichier - > Ouvrez et choisissez votre fichier build.sbt, c'est tout.
IntelliJ IDEA a une bonne intégration pour Play Framework 2. Parfois, il se bloque, mais la plupart du temps il s'exécute. Je l'utilise pour exécuter des tests (simples, tous), démarrer ou déboguer la lecture application et éditer mon code (o; Et tout cela depuis l'intérieur de la IDE et sans la console sbt.
Voici un petit tutoriel avec les étapes les plus importantes. Actuellement, j'utilise IntelliJ IDEA 12.1 avec les derniers plug-ins Play Framework 2 et Scala.
1. Créez une nouvelle application
play new myapp
2. Créez le module IDE
Démarrez la console de jeu:
cd newapp
play
Créez le module:
idea with-sources=yes
exit
. Configurez l'IDE
4. Exécutez un test
Sélectionnez ApplicationSpec sous le répertoire de test et cliquez sur Exécutez 'ApplicationSpec' à partir de le menu contextuel. Vous devriez obtenir une erreur indiquant que le modèle compilé est introuvable. Cela est dû au fait que IDE ne compile pas les modèles, mais cela peut être fait en exécutant l'application une fois. Suivez également le point 5, puis relancez le test.
5. Exécutez l'application
Sélectionnez un contrôleur et cliquez sur Exécuter l'application Play 2 dans le menu contextuel. Cela devrait démarrer l'application à l'adresse: http://localhost:9000/
.
6. Mettre à jour les dépendances
Si vous mettez à jour les dépendances de votre application, vous devez informer la IDE de ces modifications. Aussi après avoir exécuté la commande play update vous devez fermer le IDE et supprimer certains fichiers du répertoire du projet. Si vous exécutez le play idea
avant de supprimer les fichiers, vous obtenez des doubles dépendances dans votre projet de lecture.
Exécutez les étapes suivantes pour mettre à jour vos dépendances:
update
à partir de votre console de jeu.idea_modules
et .idea/libraries
répertoiresidea with-sources=yes
commande dans la console de jeuLa console de lecture comprend un fork d'un plugin sbt nommé sbt-idea . La fourchette du jeu a pris un peu de retard sur le plugin d'origine et a quelques problèmes dans IntelliJ lorsque vous exécutez play idea
. Vous pouvez utiliser le plugin d'origine, qui n'a aucun problème. Pour utiliser ce plugin dans votre projet de jeu, vous devez ..
1.Ajoutez les lignes suivantes à project/plugins.sbt
fichier: (la ligne vierge au milieu est obligatoire)
resolvers += "Sonatype snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/"
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.1")
2.Exécuter gen-idea
depuis la console de jeu.
J'ai généralement utilisé IntellijIDEA (version 12.0.4) uniquement pour l'éditeur de code Play Framework à cause de:
Et je lance et débogue généralement les applications avec la console Play SBT. C'est assez rapide. Mais, parfois, lors de l'exécution de la commande play
sur la console, j'ai trouvé que la tâche loading-project-info prenait trop de temps (près de 10 minutes). Je ne sais pas pourquoi cela arrive parfois, mais dans l'ensemble, l'utilisation de la console Play SBT est mon choix.
Je le fais parce qu'il y a généralement ne devrait pas être le problème interprété comme erreur comme suit:
La première fois que j'ai commencé à apprendre Play Framework, j'étais confronté à un tel problème. Donc, à la fin, je choisis alors d'utiliser la console Play SBT pour exécuter et déboguer l'application.
Et désolé, je ne peux pas répondre à la question numéro 2. Jusqu'à présent, je n'ai essayé que de lancer et de déboguer l'application de lecture. À des fins de test, je n'ai jamais essayé auparavant pour Play 2.x.