# 编译和构建 Scala 项目

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com/zh-cn/help/idea/llms.txt).

> **TL;DR**
> 必需插件：   Scala  ： [安装方法](get-started-with-scala.html#scala_plugin)

默认情况下，Scala 项目使用 Scala 编译器和 IntelliJ IDEA 构建。 编译过程的输出显示在   构建  工具窗口中。 您也可以将构建操作委托给 sbt。 在这种情况下，您的构建输出显示在   sbt shell  中。

## Scala 编译设置

默认情况下，您使用 Scala 编译器（  `scalac` ）来编译您的 Scala 项目。 除了支持增量编译的 Scala 编译器之外，您还可以使用 Scala 编译服务器，它是一个 Scala 编译子系统。 它帮助您减少编译开销，并且通过支持并行编译可以显著加快您的编译过程。 更多信息，请参阅 [Scala 博文](https://blog.jetbrains.com/scala/2012/12/28/a-new-way-to-compile/)。

Procedure: 配置编译设置

1. 按 `Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS)) 打开设置，然后选择  `构建、执行、部署 | 编译器 | Scala 编译器` 。

2. 在   Scala 编译器   页面上，选择增量编译器，如 [Zinc](https://www.lightbend.com/blog/zinc-and-incremental-compilation)，这是增量编译器的独立版本或 IntelliJ IDEA 原生版本。 您还可以选择代码应编译的编译顺序。 例如，先编译 Scala 代码，然后编译 Java 代码。

![Scala 编译器设置](https://resources.jetbrains.com/help/img/idea/2026.3/scala_compiler_settings.png)

3. 在   Scala 编译器   下选择   Scala 编译服务器   以配置 Scala 编译服务器。

4. 在   Scala 编译服务器  页面上，您可以配置并行编译选项和 JVM 设置。

![Scala 编译器服务器设置](https://resources.jetbrains.com/help/img/idea/2026.3/scala_compiler_server.png)

## 构建过程和编译图表

当您构建 ( `Ctrl+F9` (Windows), `⌘ F9` (macOS), `⌘ F9` (IntelliJ IDEA Classic (macOS)), `⌘ ⌃ B` (macOS System Shortcuts), `Ctrl+F9` (XWin), `Ctrl+F9` (GNOME), `Ctrl+9` (KDE), `Ctrl+F9` (Emacs), `Ctrl+F9` (Sublime Text), `Ctrl+F9` (Sublime Text (macOS)), `F7` (Visual Studio), `F7` (Visual Studio (macOS)), `F11` (NetBeans), `Ctrl+F9` (Eclipse), `⌘ B` (Eclipse (macOS))) Scala 项目时，编译是由 Scala 服务器完成的。 编译的输出显示在 [Build](build-sync-tool-window.html#build_output) 工具窗口中。 除了常规编译输出，IntelliJ IDEA 还会显示图表，帮助您优化项目模块结构以及 Scala 编译服务器的 VM 选项。

大型项目通常会被划分为模块。 每个模块都在 [阶段](https://typelevel.org/scala/docs/phases.html)中编译，一个阶段可能包含多个 [单元](https://scala-lang.org/files/archive/spec/2.11/09-top-level-definitions.html#compilation-units)（源文件）。 虽然有些模块可以并行编译，但其他模块需要按顺序等待其他模块先行编译。 它们的顺序和关系在构建系统配置文件中描述，例如 sbt 的  `build.sbt` 。 IntelliJ IDEA 可以读取这些文件，并且当您选择  `构建 | 构建项目`  时，它将使用这些信息生成编译图表。 默认情况下，图表仅显示正在编译的模块。 您可以使用   级别  下拉菜单切换到   阶段  或   单位  以查看编译过程中不同的详细级别。

[Video](https://resources.jetbrains.com/help/img/idea/2026.3/scala_compilation_charts.mp4)

## 将 Scala 项目构建委托给 sbt

您可以将项目的构建委托给 sbt。 在这种情况下，编译和源生成等步骤在 sbt 中运行，使该过程更接近实际的 CI 构建。 通过 sbt shell 执行构建，您可以查看输出。 打开 IDE 设置，然后选择  `构建、执行、部署 | 构建工具 | sbt` 。 在   sbt 项目  部分，选择您要配置构建操作的项目。

![sbt 设置：sbt 项目部分](https://resources.jetbrains.com/help/img/idea/2026.3/sbt_settings.png)

然后，在   sbt shell  部分，选择   构建  选项。 点击   OK   保存更改。 现在，当您构建项目（ `Ctrl+F9` (Windows), `⌘ F9` (macOS), `⌘ F9` (IntelliJ IDEA Classic (macOS)), `⌘ ⌃ B` (macOS System Shortcuts), `Ctrl+F9` (XWin), `Ctrl+F9` (GNOME), `Ctrl+9` (KDE), `Ctrl+F9` (Emacs), `Ctrl+F9` (Sublime Text), `Ctrl+F9` (Sublime Text (macOS)), `F7` (Visual Studio), `F7` (Visual Studio (macOS)), `F11` (NetBeans), `Ctrl+F9` (Eclipse), `⌘ B` (Eclipse (macOS))）时，构建将在 sbt shell 中运行。

![sbt shell](https://resources.jetbrains.com/help/img/idea/2026.3/sbt_shell_build.png)

如需了解更多信息，请参阅 [SBT support](sbt-support.html)。

