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 和 设置 方法调用。
打开 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。 如果您需要,可以在运行配置之前添加另一配置或任务。 点击
在 启动前 部分中,从打开的列表中选择您需要执行的内容。
当您在无干扰模式(没有工具栏和工具窗口)下工作时,您可以从 运行任何内容 窗口运行 sbt 任务或命令。 按 Ctrl 两次将其打开,输入您的命令并按 Enter。
IntelliJ IDEA 在 sbt shell 窗口中显示结果。
使用 sbt 设置
使用 sbt settings 配置 sbt 项目、sbt 版本、导入项目更改等的构建和运行操作。
访问 sbt 设置
按 Ctrl+Alt+S 打开设置,然后选择 。
或者,点击
工具窗口的工具栏上的 sbt 以访问 SBT 设置。
窗口分为两个部分: 常规设置 和 sbt 项目。
常规设置
在 常规设置 部分,您可以配置以下选项:

条目 | 描述 |
|---|---|
JRE(J) | 选择一个 JRE 来运行此项目,可以从下拉列表中选择或提供自定义位置。 它优先于默认的项目 SDK。 |
最大堆大小 | 指定 sbt 启动时分配的最大堆大小。 |
VM parameters | 指定要传递给 sbt 的 JVM 参数。 您还可以在 |
Sbt options | 指定要传递给 sbt 的 sbt 选项。 要查看所有可用选项,请运行 |
Environment variables | 指定要注入到 sbt 进程中的环境变量。 |
Launcher (sbt-launch.jar) | 指定自定义 sbt 启动器。 默认情况下,IntelliJ IDEA 使用捆绑的 sbt-launch.jar。 |
sbt 项目
在 sbt 项目 部分,您可以配置以下选项:

条目 | 描述 |
|---|---|
下载 | 请选择一个选项,在从 sbt 重新加载项目时下载源代码:
|
Open cross-compiled Scala 3 / Scala 2 projects as Scala 2 | 选择此选项可以将同时针对 Scala 2 和 Scala 3 交叉编译的项目作为 Scala 2 打开。 |
Use separate compiler output paths | 选择此选项可使用与 sbt 不同的类文件目录进行编译。 |
为主资源和测试资源创建单独的模块 | 选择此选项可以将主源和测试源组织到不同的模块中。 有关更多详细信息,请参阅此 博客文章。 |
sbt shell | 请使用复选框来控制项目重新加载和构建时是否使用 sbt shell。 |
Generate managed sources during project sync | 指示 sbt 在项目同步期间生成由项目中启用的源生成器管理的源文件(如 sbt-buildinfo、abt-twirl 以及其他类似的 sbt 插件)。 也可作为操作使用。 |
Enable debugging | 选择此选项可将 sbt shell 作为可调试进程启动。 这允许您调试 sbt 插件代码和在 sbt shell 中运行的测试。 |
如需检查最常见的 sbt 问题及解决方法,请参阅 sbt 故障排除 部分。
Package Checker 对 sbt 的支持
Package Checker 是一个用于检查第三方依赖项已知漏洞的插件。 如有可用,插件会建议安全版本,以增强代码的安全性。 它还会扫描源代码中的漏洞 API 调用,以突出显示最关键的问题。 该插件已捆绑到 IntelliJ IDEA。
Package Checker 发现的问题会上报在 标签页上。 该插件还提供
在此,您可以看到 Package Checker 如何描述 org.apache.commons % commons.io % 1.3.2 中的漏洞:

有关更多信息,请参阅 查找漏洞和恶意依赖项