IntelliJ IDEA 2025.1 Help

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.version=xxx

重新导入您的项目。 (点击 SBT 工具窗口中。)

sbt 项目结构

当您创建或导入 sbt 项目时,IntelliJ IDEA 会生成以下 sbt 结构:

  • sbt project(适当的构建),定义一个项目并包含 build.sbt 文件、 srctarget 目录、模块;与常规项目相关的任何内容。

    项目工具窗口
  • build子目录中定义的 project项目。 它包含构建定义的一部分附加代码。

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

    sbt 工具窗口

管理 sbt 项目

当您处理 sbt 项目时,您需要使用 build.sbt 文件对项目进行主要修改,因为 IntelliJ IDEA 将 sbt 配置视为单一事实来源。

每次您在编辑器中手动更改 build.sbt 时,您需要加载更改。 IntelliJ IDEA 在编辑器的右侧显示一个通知图标,建议对项目进行 加载 sbt 变更 (Ctrl+Shift+O)。

build.sbt 文件:加载 sbt 变更

如果您想要控制项目的导入过程,您可以手动触发操作或配置自动重新加载过程。

重新加载 sbt 项目

  1. sbt 工具窗口中,右键点击一个关联的项目。

  2. 从上下文菜单中选择 重新加载项目 重新加载项目图标

    在调用此操作时,IntelliJ IDEA 将解析 SBT 工具窗口中的项目结构。

    IntelliJ IDEA 不能只重新加载项目的一部分,它会重新加载整个项目,包括子项目和依赖项。

配置自动重载

  1. 设置 对话框(Ctrl+Alt+S )中,转到 生成、执行、部署 | 构建工具

    或者,在 SBT 工具窗口中,点击 构建工具设置 并选择 自动重载设置 选项。

    sbt 工具窗口
  2. 构建工具 设置中,指定以下选项:

    构建工具设置
    • 在构建脚本中重新加载更改 :此选项为默认选择。 如果您希望禁用自动重载并手动控制重载过程,请取消选中此复选框。

    • 任何更改 :如果您希望在对 build.sbt 或外部更改进行任何更改后自动重新加载项目,请选择此选项。

      每次您在编辑器中手动更改 sbt build 脚本时,都需要加载更改。 IntelliJ IDEA 在编辑器右侧显示一个通知图标,提示对项目进行 加载 sbt 变更 (Ctrl+Shift+O)。

      sbt 构建脚本

      使用 任何更改 选项,IntelliJ IDEA 将自动重新加载所有更改。

    • 外部更改 :当您选择此选项时,IntelliJ IDEA 仅在 VCS 更改和在 IDE 外部对构建文件进行更改后自动重新加载项目。

  1. 打开您的 build.sbt

  2. 请指定以下代码:

    val localDep = RootProject(file("/path/to/project"))

    在这种情况下, localDep 是位于文件系统某处的项目,并将作为模块导入。

  3. 重新加载您的项目。 (点击 SBT 工具窗口中。)

    IntelliJ IDEA 会在 项目 工具窗口以及 SBT 工具窗口中显示已添加的项目。

将子项目或模块添加到 sbt 项目

  1. 在编辑器中打开 build.sbt

  2. 例如:

    lazy val sampleModule = (project in file("sampleModule"))

    在这种情况下, "sampleModule" 是您要添加的子项目。 您可以指定多个子项目。

  3. 重新导入您的项目。 (点击 重新导入项目SBT 工具窗口中。)

    IntelliJ IDEA 生成一个包含适当信息的子项目目录,并在 项目SBT 工具窗口中显示。

更新子项目

如果您希望在更改 Scala 版本时子项目自动更新,请为每个子项目指定 commonSettingssettings 方法调用。

  1. 打开 build.sbt

  2. 例如,指定以下代码:

    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 shell 部分,位于 sbt 设置 中,并执行 使用 sbt shell 运行 Scala 应用程序 部分中描述的步骤。

  • 如需使用 sbt shell 进行调试,请参阅 使用 sbt shell 进行调试一节。

  • 要从 sbt shell 运行您的测试:

    1. 打开运行/调试配置 (运行 | 编辑配置)。

    2. 创建一个 测试配置并从可用设置中选择 使用 sbt 选项。

运行 sbt 任务

  • 您可以通过从 sbt 任务 目录中选择所需的任务来运行 sbt 任务,并在 SBT 工具窗口中查看。

  • 您可以在 sbt shell 中手动输入任务(支持代码补全),然后直接从那里运行。

  • 您可以为任务创建运行配置。 例如,您可以创建一个不在 SBT 工具窗口任务列表中的自定义任务。

    1. Alt+Shift+F10 打开运行配置。

    2. 指定运行配置设置并点击 OK。 如果您需要,可以在运行配置之前添加另一配置或任务。 点击 "添加"图标启动前 部分中,从打开的列表中选择您需要执行的内容。

  • 当您在无干扰模式(没有工具栏和工具窗口)下工作时,您可以从 Run Anything(运行任何内容) 窗口运行 sbt 任务或命令。 按 Ctrl 两次将其打开,输入您的命令并按 Enter

IntelliJ IDEA 在 sbt shell 窗口中显示结果。

使用 sbt 设置

使用 sbt settings 配置 sbt 项目、sbt 版本、导入项目更改等的构建和运行操作。

访问 sbt 设置

  1. Ctrl+Alt+S 打开设置,然后选择 构建、执行、部署|sbt

  2. 或者,点击 sbt 设置 工具窗口的工具栏上的 SBT 以访问 SBT 设置。

窗口分为两个部分: 常规设置sbt 项目

常规设置

sbt 通用设置

常规设置 中,您可以设置以下选项:

  1. JRE :选择一个 JRE 来运行此项目,可以从下拉列表中选择或提供自定义位置。 它优先于默认的项目 SDK。

  2. 最大堆大小 :sbt 启动时的最大堆内存大小。

  3. 虚拟机参数 :传递给 sbt 的 JVM 参数。 您还可以在 JAVA_OPTS 环境变量或项目根目录下的 .jvmopts 文件中声明 JVM 选项。 在 IntelliJ IDEA 设置中配置的选项优先级最高,其次是 .jvmopts 文件中的选项,最后是环境变量中的选项。

  4. sBT 选项 :传递给 sbt 的 sbt 选项。 您可以使用 sbt --help 命令查看所有可用选项。 您还可以在 SBT_OPTS 环境变量或项目根目录下的 .sbtopts 文件中声明 sbt 选项。 来自不同来源的选项优先级与 VM 参数类似。

  5. 环境变量 :注入到 sbt 进程的环境变量

  6. 启动器 :在此,您可以指定一个自定义启动器,默认是捆绑的 sbt-launch.jar。

sbt 项目

sbt 项目设置

sbt 项目 中,您可以设置以下选项:

  1. 下载库源代码 :从 sbt 重新加载项目时,下载项目库依赖项的源代码。

  2. 下载 sbt 源代码 :从 sbt 重新加载项目时,下载 sbt 和 sbt 插件的源代码。

  3. 将交叉编译的 Scala 3 / Scala 2 项目作为 Scala 2 打开 :针对 Scala 2 和 Scala 3 交叉编译的项目可以作为 Scala 2 打开。

  4. 使用单独的编译器输出路径 :IntelliJ IDEA 将使用与 sbt 不同的类文件目录进行编译。

  5. 为主资源和测试资源创建单独的模块 :在我们的博客文章中了解更多, sbt 的新模块布局

  6. sbt shell :在此,您还可以指定是否希望在项目重新加载和构建时使用 sbt shell。 使用 sbt shell 进行重新加载速度更快,但这需要 IntelliJ IDEA 将 shell 保留在内存中。

如需检查最常见的 sbt 问题及解决方法,请参阅 sbt 故障排除 部分。

最后修改日期: 2025年 4月 24日