Подтвердить что ты не робот

Как использовать IntelliJ с Play Framework и Scala

Я пытаюсь использовать IntelliJ с приложением play Framework 2.11.

Я установил плагин Play Framework 2 и плагин Scala для IntelliJ.

Я создал приложение Play. Я изо всех сил пытался писать и запускать тесты Specs 2 в IntelliJ. Моя программа запуска говорит, что сначала запускается "make" при запуске теста Specs 2, однако это не похоже на то, что мои тестовые классы генерируются. Продолжает рассказывать мне, что он не смог найти спецификацию. Когда я смотрю на файловую систему, в целевых/тестовых классах нет кода, каталог пуст. Кроме того, для выполнения сборки, кажется, требуется ДЛИТЕЛЬНОЕ время, по крайней мере, по сравнению с запуском Play консоли.

Я хотел посмотреть, как люди используют Play с IntelliJ. Вы просто используете IntelliJ в качестве редактора и запускаете все через консоль Play?

Есть ли способ, с помощью которого вы можете запускать свои тесты приложений в IntelliJ (чтобы запустить тестовые классы)?

У меня никогда не было проблем с запуском консоли Play и запуском ~ test-only test = xxx.Spec. Это было довольно быстро.

Вот исключение, которое я получаю в IntelliJ, когда я пытаюсь запустить тесты 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
4b9b3361

Ответ 1

Обновление. В новых версиях, если IntelliJ IDEA, больше не нужно создавать модуль из игры/активатора. IntelliJ IDEA теперь действительно поддерживает проекты SBT. Если существует, удалите все связанные с идеей каталоги внутри вашего проекта. Затем в IntelliJ IDEA нажмите "Файл" → "Открыть" и выберите файл build.sbt. Это все.


IntelliJ IDEA имеет хорошую интеграцию для Play Framework 2. Иногда он застревает, но большую часть времени он работает. Я использую его для запуска (одиночных, всех) тестов, запуска или отладки приложения воспроизведения и редактирования моего кода (o; И это все изнутри среды IDE и без консоли sbt.

Вот краткое руководство с наиболее важными шагами. В настоящее время я использую IntelliJ IDEA 12.1 с новейшими плагинами Play Framework 2 и Scala.

1. Создайте новое приложение

play new myapp

2. Создайте модуль IDE

Запустите консоль воспроизведения:

cd newapp
play

Создайте модуль:

idea with-sources=yes
exit

3. Настроить IDE

  • Откройте вновь созданный проект
  • Откройте настройки модуля (выберите проект и нажмите F4)
  • Добавьте библиотеку Scala в свой проект
    • Выберите модули- > myapp- > Зависимости
    • Нажмите значок "плюс" и выберите "Библиотека" (2)
    • Добавить библиотеку проектов Scala 2.10.0
  • Выберите библиотеку компилятора в Scala Facet
    • Выберите Facets → Scala (myapp)
    • Установите библиотеку компилятора в Scala 2.10.0
  • Исправить ошибки
    • Выберите Modules- > myapp-build- > Dependencies → scala -2.9.2 и нажмите значок минуса
    • Выберите Библиотеки → Scala 2.9.2 и нажмите значок минуса
  • Исправить выходной путь для модуля myapp-build
    • Выберите "Модули- > myapp-build- > Paths
    • Добавить классы в путь вывода (X:\projects\myapp\project\target\scala_2.9.2\classes)
    • Добавить тестовые классы в тестовый выходной путь (X:\projects\myapp\project\target\scala_2.9.2\test-classes)

4. Выполнить тест

Выберите ApplicationSpec в тестовом каталоге и нажмите "Запустить" ApplicationSpec "в контекстном меню. Вы должны получить сообщение об ошибке, что скомпилированный шаблон не найден. Это связано с тем, что IDE не компилирует шаблоны, но это можно сделать, запустив приложение один раз. Также следуйте пункту 5, а затем снова запустите тест.

5. Запустите приложение

Выберите контроллер и нажмите "Запустить воспроизведение 2" из контекстного меню. Это должно запустить приложение по адресу: http://localhost:9000/.

6. Обновить зависимости

Если вы обновляете зависимости приложения, вы должны сообщить об этом изменениям в среде IDE. Также после запуска команды обновления воспроизведения вы должны закрыть среду IDE и удалить некоторые файлы из каталога проекта. Если вы выполняете команду play idea перед удалением файлов, вы получаете двойные зависимости в своем проекте воспроизведения.

Выполните следующие шаги для обновления зависимостей:

  • Запустите задачу update с вашей игровой консоли.
  • Удалите каталоги .idea_modules и .idea/libraries
  • Запустите команду idea with-sources=yes в консоли воспроизведения
  • Повторите шаг 3 снова

Ответ 2

Play console включает в себя вилку плагина sbt с именем sbt-idea. Вилка игры немного отстала от исходного плагина и имеет некоторые проблемы в IntelliJ при запуске play idea. Вы можете использовать оригинальный плагин, который не имеет никаких проблем. Чтобы использовать этот плагин в вашем проекте воспроизведения, вам нужно...

1. Добавьте следующие строки в файл project/plugins.sbt: (требуется пустая строка в середине)

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

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

2.Run gen-idea с игровой консоли.

Ответ 3

Я обычно использовал IntellijIDEA (версия 12.0.4) только для редактора кода Play Framework из-за:

  • Функция автоматического сохранения по умолчанию
  • Скорее быстрая функция IntelliSense.
  • Dracula UI, это удовольствие для меня.

И я обычно запускаю и отлаживаю приложения с помощью консоли Play SBT. Это разумно быстро. Но иногда при выполнении команды play на консоли я обнаружил, что задача load-project-info занимает слишком много времени (около 10 минут). Я не знаю, почему это происходит иногда, но в целом использование Play SBT-консоли - это мой выбор.

Я делаю это, потому что обычно не должно быть проблемных вещей, таких как ошибка, например:

IDEA Error

В первый раз, когда я начал изучать Play Framework, я столкнулся с такой проблемой. Итак, в конце я решил использовать консоль Play SBT для запуска и отладки приложения.

И жаль, что я не могу ответить на вопрос номер 2. До сих пор я только пытался запустить и отладить игровое приложение. Для целей тестирования я никогда не пробовал раньше для Play 2.x.