gpt4 book ai didi

scala - 如何将 IntelliJ 与 Play Framework 和 Scala 结合使用

转载 作者:行者123 更新时间:2023-12-01 06:08:48 25 4
gpt4 key购买 nike

我正在尝试将 IntelliJ 与 Play Framework 2.11 应用程序一起使用。

我为 IntelliJ 安装了 Play Framework 2 插件和 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

最佳答案

更新 :在较新的版本中,如果 IntelliJ IDEA,不再需要从 play/activator 创建模块。 IntelliJ IDEA 现在对 SBT 项目有很好的支持。如果存在,请删除项目中所有与想法相关的目录。然后在 IntelliJ IDEA 中单击 File -> Open 并选择您的 build.sbt 文件。就这样。

IntelliJ IDEA 对 Play Framework 2 有很好的集成。有时会卡住,但大部分时间会运行。我用它来运行(单个,所有)测试,启动或调试 Play 应用程序并编辑我的代码(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 并按减号图标
  • 选择 Libraries->Scala 2.9.2 并按减号
  • 修复 myapp-build 模块的输出路径
  • 选择模块->myapp-build->路径
  • 将类附加到输出路径(X:\projects\myapp\project\target\scala_2.9.2\classes)
  • 将测试类附加到测试输出路径(X:\projects\myapp\project\target\scala_2.9.2\test-classes)

  • 4.运行测试

    选择测试目录下的 ApplicationSpec,然后从上下文菜单中单击 Run 'ApplicationSpec'。您应该会收到一个错误,即找不到已编译的模板。这是因为 IDE 不编译模板,但这可以通过运行应用程序一次来完成。同样遵循第 5 点,然后再次运行测试。

    5. 运行应用程序

    选择一个 Controller ,然后从上下文菜单中单击 Run Play 2 App。这应该在地址上启动应用程序: http://localhost:9000/ .

    6.更新依赖

    如果您更新您的应用程序依赖项,那么您必须将这些更改告知 IDE。此外,在运行 play update 命令后,您必须关闭 IDE 并从项目目录中删除一些文件。如果执行 play idea删除文件之前的命令,你会在你的 Play 项目中获得双重依赖。

    执行以下步骤来更新您的依赖项:
  • 运行 update来自您的游戏控制台的任务
  • 删除 .idea_modules.idea/libraries目录
  • 运行 idea with-sources=yes游戏控制台中的命令
  • 再次运行步骤 3
  • 关于scala - 如何将 IntelliJ 与 Play Framework 和 Scala 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16135716/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com