我正在尝试将IntelliJ与play framework 2.11应用程序一起使用。
我安装了Play Framework 2插件和IntelliJ的Scala插件。
我创建了一个Play应用程序。我一直在努力在IntelliJ中编写和运行Specs 2测试。我的运行配置说在运行Specs 2测试时首先运行“make”,但是看起来我的测试类看起来不像。继续告诉我它找不到规范。当我查看文件系统时,目标/测试类中没有代码,目录为空。此外,至少与运行Play控制台相比,似乎需要花费很长时间才能进行构建。
我想看看人们如何使用Play with IntelliJ。您是否只使用IntelliJ作为编辑器,并通过Play控制台运行所有内容?
有没有办法可以在IntelliJ中运行应用程序测试(让测试类运行)?
我在运行Play控制台并运行~test-only test = xxx.Spec时从未遇到任何问题。它通常很快。
当我尝试运行我的Specs2测试时,这是我在IntelliJ中获得的异常:
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
答案 0 :(得分:56)
更新:在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
<强> 4。运行测试
选择测试目录下的 ApplicationSpec ,然后从上下文菜单中单击运行'ApplicationSpec'。您应该收到无法找到已编译模板的错误。这是因为IDE不编译模板,但这可以通过运行一次应用程序来完成。也请遵循第5点,然后再次运行测试。
<强> 5。运行应用程序
选择一个控制器,然后从上下文菜单中单击运行Play 2 App 。这应该在地址上启动应用程序:http://localhost:9000/
。
<强> 6。更新依赖关系
如果更新应用程序依赖项,则必须告知IDE有关此更改的信息。此外,在运行 play update 命令后,您必须关闭IDE并从项目目录中删除一些文件。如果在删除文件之前执行play idea
命令,则会在播放项目中获得双重依赖关系。
执行以下步骤以更新依赖项:
update
任务.idea_modules
和 .idea/libraries
目录idea with-sources=yes
命令答案 1 :(得分:3)
Play控制台包含一个名为sbt-idea的sbt插件的分支。该游戏的分支落后于原始插件,并且在运行play idea
时在IntelliJ中存在一些问题。您可以使用原始插件,它没有任何问题。要在播放项目中使用此插件,您需要..
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.从游戏机中运行gen-idea
。
答案 2 :(得分:0)
我通常仅在Play Framework代码编辑器中使用IntellijIDEA(版本12.0.4),因为:
我通常使用Play SBT控制台运行和调试应用程序。这很合理。但是,有时在控制台上执行play
命令时,我发现 loading-project-info 任务花费的时间太长(接近10分钟)。我不知道为什么会发生这种情况,但总体而言,Play SBT控制台的使用是我的选择。
我这样做是因为通常应该不是问题解释为错误,如下所示:
第一次开始学习Play Framework时,我遇到了这样的问题。所以,最后,我选择使用Play SBT控制台来运行和调试应用程序。
抱歉,我无法回答第2号问题。到目前为止,我只试过运行和调试播放应用程序。出于测试目的,我以前从未尝试过Play 2.x.