构建工具
sbt、Mill、Scala.js/Native 概览。
30 分钟
构建工具
Scala 项目常用 sbt(Simple Build Tool),也可选 Mill;Scala.js 编译到 JavaScript,Scala Native 编译到原生二进制。对照 /roadmaps/scala「Build Tools」节点。
学习目标
- 读懂 sbt 项目结构与
build.sbt常用配置 - 运行 compile / test / run 与依赖管理
- 了解 Mill、Scala.js、Scala Native 的定位
核心概念
sbt 项目结构
bookmark-api/
├── build.sbt
├── project/
│ └── build.properties # sbt 版本
└── src/
├── main/scala/
│ └── Main.scala
└── test/scala/
└── MainSuite.scala
sbt new 或 g8 模板可快速脚手架;依赖写法类似 Maven 坐标。
build.sbt 示例
ThisBuild / scalaVersion := "3.3.3"
ThisBuild / organization := "com.coderoadmap"
ThisBuild / version := "0.1.0-SNAPSHOT"
lazy val root = (project in file("."))
.settings(
name := "bookmark-api",
libraryDependencies ++= Seq(
"org.scalatest" %% "scalatest" % "3.2.18" % Test,
"io.circe" %% "circe-generic" % "0.14.6",
"io.circe" %% "circe-parser" % "0.14.6"
)
)
%% 自动追加 Scala 二进制版本后缀;% Test 表示测试 scope。
常用命令
sbt compile
sbt test
sbt run
sbt "runMain com.coderoadmap.Main"
sbt clean assembly # 需 sbt-assembly 插件打 fat jar
// src/main/scala/Main.scala
package com.coderoadmap
@main def run(): Unit =
println("sbt run OK")
Mill 与跨平台概览
| 工具 | 特点 |
|---|---|
| sbt | 生态最大、插件多、学习曲线陡 |
| Mill | 配置更直观、增量构建快 |
| Scala.js | 前端或与 TS 互操作 |
| Scala Native | 无 JVM 的原生可执行文件 |
Java 团队若已有 Maven/Gradle 多模块项目,也可用 Gradle Scala Plugin 或 Maven scala-maven-plugin 集成 Scala 源码。
与 Java 对照
| Scala | Java |
|---|---|
| sbt / Mill | Maven / Gradle |
libraryDependencies |