创建项目有三种基本方法 - 现代版本的 IntelliJ 可以直接导入 sbt 项目,否则您可以使用 sbt 插件生成 IntelliJ 项目,或使用 IntelliJ Scala 插件创建 sbt 项目。使用这两种解决方案的基本功能开箱即用,一些复杂的构建可能会出现问题,因此请尝试其他工具以查看它是否可以在那里工作。
智能
这些天来,IntelliJ IDEA 变得更好了。当前版本 (14.0.2) 通过 Scala 插件支持开箱即用的 sbt 项目。只需安装插件,您就可以毫无问题地打开 Scala/sbt 项目。

使用该插件,只需指向一个 sbt 项目,IDEA 就会为您提供一个向导来打开该项目。

IntelliJ Scala 插件
IntelliJ 插件可以在这里找到
http://confluence.jetbrains.com/display/SCA/Scala+Plugin+for+IntelliJ+IDEA或者可以使用设置 -> 插件对话框直接从 IDE 中安装。之后可以只做 File -> New Project -> Scala -> SBT based。IntelliJ 将生成基本的 build.sbt,下载必要的依赖项并打开项目。
SBT 插件
可以在这里找到基于 sbt 文件生成想法项目的 Sbt 插件:https ://github.com/mpeltonen/sbt-idea
SBT 12.0+ & 13.0+
只需添加addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.2")
到您的build.sbt
; 不需要额外的解析器。
旧版本:
SBT 0.11+
创建以下行并将其添加到~/.sbt/plugins/build.sbt
ORPROJECT_DIR/project/plugins.sbt
resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")
在 sbt 中使用gen-idea
来创建 IDEA 项目文件。
默认情况下,如果找到了 sbt 和库依赖项的分类器(即源代码和 javadocs),并且将引用添加到 IDEA 项目文件中,则会加载它们。如果您不想下载/引用它们,请使用 command gen-idea no-classifiers no-sbt-classifiers
。
SBT 0.10.1
(根据插件作者的说法,0.10.0不起作用!)
创建以下行并将其添加到 ~/.sbt/plugins/build.sbt:
resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"
libraryDependencies += "com.github.mpeltonen" %% "sbt-idea" % "0.10.0"
使用gen-idea
sbt task 创建 IDEA 项目文件。
默认情况下,如果找到了 sbt 和库依赖项的分类器(即源代码和 javadocs),并且将引用添加到 IDEA 项目文件中,则会加载它们。如果您不想下载/引用它们,请使用 command gen-idea no-classifiers no-sbt-classifiers
。
SBT 0.7
要使用它,只需从你的 sbt shell 运行它,它将使用插件作为外部程序:
> *sbtIdeaRepo at http://mpeltonen.github.com/maven/
> *idea is com.github.mpeltonen sbt-idea-processor 0.4.0
...
> update
...
> idea
...
您还可以根据需要在项目定义中添加特征:
import sbt._
class MyProject(info: ProjectInfo) extends ParentProject(info) with IdeaProject {
lazy val mySubProject = project("my-subproject", "my-subproject", new DefaultProject(_) with IdeaProject)
// ...
}