SBT
使用 sbt
当您导入或创建 sbt 项目后,您可以直接在编辑器中编辑其 build.sbt 文件。 在 build.sbt 中,您可以指定编译器选项、子项目的相关信息,还可以定义任务和设置。 每次您更改 build.sbt 文件时,您需要将更改与 IntelliJ IDEA 中的项目模型同步。
您可以配置 在构建脚本更改后同步项目 选项以自动同步对 build.sbt 所做的更改。 要访问此选项,请选择 。
若要进行手动同步,请使用 sbt projects 工具窗口工具栏上的相应操作: 。
请注意,任何 sbt 任务都可以附加在运行配置之前执行。
打开一个现有的 sbt 项目
要创建一个新项目,启动 新项目向导并按照向导中的步骤操作,例如选择 ScalaSBT ;指定项目位置、JDK以及 sbt 和 Scala 的版本。 ( sbt 和 Scala 版本是自动获取的。)
如果 IntelliJ IDEA 当前没有打开任何项目,请点击欢迎屏幕上的 打开 (否则,从主菜单中选择 )。 然后,在对话框中选择一个包含您的 sbt 项目描述的文件 build.sbt 。 点击 OK ,然后在下一个对话框中点击 选择作为项目。
IntelliJ IDEA 在 IDE 中打开并同步 sbt 项目。 如果您在打开项目时需要调整导入选项,请参阅 sbt settings。
确保 sbt 和 Scala 版本兼容性
通常,您会在团队中共享项目,并需要使用特定版本的 sbt。 您可以在项目的 build.properties 文件中重写 sbt 版本。
创建或 打开您的 sbt 工程。 在 项目 工具窗口中,在 源根 目录中,找到 build.properties 文件并在编辑器中打开它。 然后,在编辑器中明确指定您想在项目中使用的 sbt 版本。
重新导入您的项目。 (点击 在 SBT 工具窗口中。)
sbt 项目结构
当您创建或导入 sbt 项目时,IntelliJ IDEA 会生成以下 sbt 结构:
sbt project(适当的构建),定义一个项目并包含 build.sbt 文件、 src 和 target 目录、模块;与常规项目相关的任何内容。

在 build子目录中定义的 project项目。 它包含构建定义的一部分附加代码。

包含 sbt 任务、命令和设置的 SBT 工具窗口,您可以执行这些任务、命令和设置。

管理 sbt 项目
当您处理 sbt 项目时,您需要使用 build.sbt 文件对项目进行主要修改,因为 IntelliJ IDEA 将 sbt 配置视为单一事实来源。
每次您在编辑器中手动更改 build.sbt 时,您需要加载更改。 IntelliJ IDEA 在编辑器的右侧显示一个通知图标,建议对项目进行 加载 sbt 变更 (Ctrl+Shift+O)。

如果您想要控制项目的导入过程,您可以手动触发操作或配置自动重新加载过程。
重新加载 sbt 项目
在 sbt 工具窗口中,右键点击一个关联的项目。
从上下文菜单中选择 重新加载项目
。
在调用此操作时,IntelliJ IDEA 将解析 SBT 工具窗口中的项目结构。
IntelliJ IDEA 不能只重新加载项目的一部分,它会重新加载整个项目,包括子项目和依赖项。
配置自动重载
在 设置 对话框(Ctrl+Alt+S )中,转到 。
或者,在 SBT 工具窗口中,点击
并选择 自动重载设置 选项。

在 构建工具 设置中,指定以下选项:

在构建脚本中重新加载更改 :此选项为默认选择。 如果您希望禁用自动重载并手动控制重载过程,请取消选中此复选框。
任何更改 :如果您希望在对 build.sbt 或外部更改进行任何更改后自动重新加载项目,请选择此选项。
每次您在编辑器中手动更改 sbt build 脚本时,都需要加载更改。 IntelliJ IDEA 在编辑器右侧显示一个通知图标,提示对项目进行 加载 sbt 变更 (Ctrl+Shift+O)。

使用 任何更改 选项,IntelliJ IDEA 将自动重新加载所有更改。
外部更改 :当您选择此选项时,IntelliJ IDEA 仅在 VCS 更改和在 IDE 外部对构建文件进行更改后自动重新加载项目。
链接外部 sbt 项目
打开您的 build.sbt 。
请指定以下代码:
val localDep = RootProject(file("/path/to/project"))在这种情况下,
localDep是位于文件系统某处的项目,并将作为模块导入。重新加载您的项目。 (点击
在 SBT 工具窗口中。)
IntelliJ IDEA 会在 项目 工具窗口以及 SBT 工具窗口中显示已添加的项目。
将子项目或模块添加到 sbt 项目
在编辑器中打开 build.sbt 。
例如:
lazy val sampleModule = (project in file("sampleModule"))在这种情况下,
"sampleModule"是您要添加的子项目。 您可以指定多个子项目。重新导入您的项目。 (点击
在 SBT 工具窗口中。)
IntelliJ IDEA 生成一个包含适当信息的子项目目录,并在 项目 和 SBT 工具窗口中显示。
更新子项目
如果您希望在更改 Scala 版本时子项目自动更新,请为每个子项目指定 commonSettings 和 settings 方法调用。
打开 build.sbt 。
例如,指定以下代码:
lazy val commonSettings = Seq( organization := "com.example", version := "0.1.0-SNAPSHOT", scalaVersion := "2.12.6" ) lazy val moduleSample = (project in file("moduleSample")) .settings( commonSettings )适当的 Scala 版本将作为依赖项添加到子项目目录中的 项目 工具窗口和 SBT 工具窗口。
使用 sbt shell
在项目启动时, sbt 项目中嵌入了一个 sbt shell。 您可以使用 sbt shell 来执行 sbt 命令和任务,运行和调试您的项目。
要启动 sbt shell,请按 Ctrl+Shift+S (Windows)或 ⌘+⇧+S (macOS)。 或者,点击屏幕底部工具栏上的
。要使用 sbt shell 进行构建和导入过程,选择 使用 sbt shell 部分,位于 sbt 设置 中,并执行 使用 sbt shell 运行 Scala 应用程序 部分中描述的步骤。
如需使用 sbt shell 进行调试,请参阅 使用 sbt shell 进行调试一节。
要从 sbt shell 运行您的测试:
打开运行/调试配置 ()。
创建一个 测试配置并从可用设置中选择 使用 sbt 选项。
运行 sbt 任务
您可以通过从 sbt 任务 目录中选择所需的任务来运行 sbt 任务,并在 SBT 工具窗口中查看。
您可以在 sbt shell 中手动输入任务(支持代码补全),然后直接从那里运行。
您可以为任务创建运行配置。 例如,您可以创建一个不在 SBT 工具窗口任务列表中的自定义任务。
按 Alt+Shift+F10 打开运行配置。
指定运行配置设置并点击 OK。 如果您需要,可以在运行配置之前添加另一配置或任务。 点击
在 启动前 部分中,从打开的列表中选择您需要执行的内容。
当您在无干扰模式(没有工具栏和工具窗口)下工作时,您可以从 Run Anything(运行任何内容) 窗口运行 sbt 任务或命令。 按 Ctrl 两次将其打开,输入您的命令并按 Enter。
IntelliJ IDEA 在 sbt shell 窗口中显示结果。
使用 sbt 设置
使用 sbt settings 配置 sbt 项目、sbt 版本、导入项目更改等的构建和运行操作。
访问 sbt 设置
按 Ctrl+Alt+S 打开设置,然后选择 。
或者,点击
工具窗口的工具栏上的 SBT 以访问 SBT 设置。
窗口分为两个部分: 常规设置 和 sbt 项目。
常规设置

在 常规设置 中,您可以设置以下选项:
JRE :选择一个 JRE 来运行此项目,可以从下拉列表中选择或提供自定义位置。 它优先于默认的项目 SDK。
最大堆大小 :sbt 启动时的最大堆内存大小。
虚拟机参数 :传递给 sbt 的 JVM 参数。 您还可以在 JAVA_OPTS 环境变量或项目根目录下的 .jvmopts 文件中声明 JVM 选项。 在 IntelliJ IDEA 设置中配置的选项优先级最高,其次是 .jvmopts 文件中的选项,最后是环境变量中的选项。
sBT 选项 :传递给 sbt 的 sbt 选项。 您可以使用 sbt --help 命令查看所有可用选项。 您还可以在 SBT_OPTS 环境变量或项目根目录下的 .sbtopts 文件中声明 sbt 选项。 来自不同来源的选项优先级与 VM 参数类似。
环境变量 :注入到 sbt 进程的环境变量
启动器 :在此,您可以指定一个自定义启动器,默认是捆绑的 sbt-launch.jar。
sbt 项目

在 sbt 项目 中,您可以设置以下选项:
下载库源代码 :从 sbt 重新加载项目时,下载项目库依赖项的源代码。
下载 sbt 源代码 :从 sbt 重新加载项目时,下载 sbt 和 sbt 插件的源代码。
将交叉编译的 Scala 3 / Scala 2 项目作为 Scala 2 打开 :针对 Scala 2 和 Scala 3 交叉编译的项目可以作为 Scala 2 打开。
使用单独的编译器输出路径 :IntelliJ IDEA 将使用与 sbt 不同的类文件目录进行编译。
为主资源和测试资源创建单独的模块 :在我们的博客文章中了解更多, sbt 的新模块布局。
sbt shell :在此,您还可以指定是否希望在项目重新加载和构建时使用 sbt shell。 使用 sbt shell 进行重新加载速度更快,但这需要 IntelliJ IDEA 将 shell 保留在内存中。
如需检查最常见的 sbt 问题及解决方法,请参阅 sbt 故障排除 部分。