9

假设我有一个scala代码,打开intellij idea

object Test extends App {
                           // <- I click here
  def init[T](xs: List[T]) : List[T] = xs match {
    case List() => throw new Error("empty list")
    case List(x) => List() // empty list 
    case head :: tail => head :: init(tail)
  }

  val list = List(1,2,4)

  println ( init(list) )

}

然后,当我想启动此代码时,我在定义的行之间单击以object告知我要启动的内容(在本例中为整个对象,因为我没有选择任何方法)。单击CTRL+SHIFT+F10 - 运行。defIDE

它开始了..我在我的配置组合框中看到“测试”...但是在那一刻我停止编译过程..并转到该配置以更改配置..

我改变的是:“启动前”部分使其与“sbt:compile”一起运行。我这样做是因为我想依赖 SBT 而不是 IDE

问题是:有没有办法在 IntellyJ IDEA 中默认在 sbt 中启动/编译?

4

2 回答 2

3

是的,你可以做到,但你需要确保这是一个有效的 SBT 项目。要验证,请确保您可以在命令行上从 SBT 编译和运行。

  1. 为 Intellij IDEA 安装 SBT 插件
  2. 在 Run -> Edit Configurations... 中打开此测试的运行配置...
  3. 在“启动前”部分删除 Make 并添加 SBT 操作“运行 SBT 操作‘编译’”

现在修改您的测试代码并重新运行。您将在状态栏中看到 SBT 编译在您的测试代码执行之前正在运行。

更新 要使这成为所有未来运行配置的默认行为,请在 Edit Configurations... 对话框中的 Defaults -> Application 项中进行此更改。

于 2013-10-26T22:25:06.620 回答
1

让我更新一下,因为在寻找解决方案时仍然会出现这种情况。SBT 插件现已弃用,我们可以从 IntelliJ 首选项配置 SBT 构建:

Preferences --> Build, Execution, Deployment --> Build Tools --> sbt: Use SBT shell for imports, for builds

请参阅https://blog.jetbrains.com/scala/2017/03/23/scala-plugin-for-intellij-idea-2017-1-cleaner-ui-sbt-shell-repl-worksheet-akka-support-and -更多/了解更多详情。

于 2019-12-26T00:25:03.890 回答