web-dev-qa-db-fra.com

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 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
34
noplay

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

  1. Ouvrez le projet nouvellement créé
  2. Ouvrez les paramètres du module (sélectionnez le projet et appuyez sur F4)
  3. Ajoutez la bibliothèque Scala à votre projet
    1. Sélectionnez Modules-> myapp-> Dépendances
    2. Appuyez sur l'icône plus et sélectionnez Bibliothèque (2)
    3. Ajoutez la bibliothèque de projets Scala 2.10.0
  4. Sélectionnez la bibliothèque du compilateur dans la facette Scala
    1. Sélectionnez Facettes-> Scala (myapp)
    2. Définissez la bibliothèque de compilateur sur Scala 2.10.0
  5. Corrigez les erreurs
    1. Sélectionnez Modules-> myapp-build-> Dépendances-> scala-2.9.2 et appuyez sur l'icône moins
    2. Sélectionnez Bibliothèques-> Scala 2.9.2 et appuyez sur l'icône moins
  6. Corrigez le chemin de sortie du module myapp-build
    1. Sélectionnez Modules-> myapp-build-> Chemins
    2. Ajoutez les classes au chemin de sortie (X:\projects\myapp\projet\cible\scala_2.9.2\classes)
    3. Ajoutez les classes de test au Chemin de sortie du test (X:\projets\myapp\project\target\scala_2.9.2\test-classes)

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:

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

La 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.

3
Yeonho

J'ai généralement utilisé IntellijIDEA (version 12.0.4) uniquement pour l'éditeur de code Play Framework à cause de:

  1. Fonction d'enregistrement automatique par défaut
  2. Fonction IntelliSense assez rapide
  3. Dracula UI, c'est un plaisir visuel pour moi

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:

IDEA Error

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.

0
Wayan Wiprayoga