Scala基础
下载安装
参考官网:https://www.scala-lang.org/
JDK兼容性
https://docs.scala-lang.org.cn/overviews/jdk-compatibility/overview.html
Scala REPL
Scala REPL是和JShell差不多的东西。一个交互式的环境,它允许用户逐行输入 Scala 代码,立即执行并获取结果。
Scala安装好后,直接命令行输入scala即可进入:
➜ scala
Welcome to Scala 2.13.16 (Java HotSpot(TM) 64-Bit Server VM, Java 17.0.7).
Type in expressions for evaluation. Or try :help.
scala> println("Hello World")
Hello World
scala> 1 + 2L
val res1: Long = 3
sbt 构建工具
SBT(Simple Build Tool)是Scala的项目构建工具
参考文档:
- sbt Reference Manual: https://www.scala-sbt.org/1.x/docs/index.html
- https://docs.scala-lang.org/zh-cn/scala3/book/tools-sbt.html
Apache ivy
SBT 是构建工具,负责项目构建的方方面面,如编译、测试、打包、运行等。在进行这些任务时,它需要外部库(依赖项),这些依赖项需要被下载和管理。
而 Apache Ivy 是 SBT 内部使用的依赖管理系统,负责处理下载和管理这些外部依赖的繁重工作。;SBT 利用 Ivy 来解析、下载和管理项目所需的库(JAR 包等),从 Maven 或 Ivy 仓库获取依赖,并将其缓存到本地(通常在用户目录的 .ivy2/local ),从而实现了对 Scala 项目依赖的自动化管理。
当你用 SBT 构建项目时,SBT 会调用内部的 Ivy 模块来处理 libraryDependencies 中定义的依赖。
SBT 配置告诉 Ivy 依赖的组织、模块和版本,Ivy 则负责具体的下载和缓存。
SBT 甚至支持 Ivy 独特的依赖解析功能,如版本号范围。
简单来说 sbt + ivy = maven
兼容性
| JDK | sbt | mill |
|---|---|---|
| 21 (LTS) | 1.9.0 | 0.11.5 |
| 17 (LTS) | 1.6.0 | 0.7.0 |
| 11 (LTS) | 1.1.0 | 0.1.5 |
| 8 (LTS) | 1.0.0 | 0.1.0 |
Scala 3.x 系列支持 JDK 8,以及 11 及更高版本。
下载安装:
直接从Github下载二进制压缩包:https://github.com/sbt/sbt
镜像源设置
SBT 通常使用 Maven 中央仓库下载依赖。
修改 build.sbt 文件
在build.sbt文件中添加以下内容:
resolvers ++= Seq(
"Aliyun Maven" at "https://maven.aliyun.com/repository/public",
"Maven Central" at "https://repo1.maven.org/maven2/"
)
也可以通过修改 SBT 全局配置文件~/.sbt/repositories来设置镜像。创建或编辑 ~/.sbt/repositories 文件,添加以下内容:
[repositories]
local
Aliyun Maven: https://maven.aliyun.com/repository/public
Maven Central: https://repo1.maven.org/maven2/
常见镜像源
- 阿里云:
https://maven.aliyun.com/repository/public - 清华大学:
https://mirrors.tuna.tsinghua.edu.cn/git/maven/ - 华为云:
https://repo.huaweicloud.com/repository/maven/
常见问题
仓库地址忽略SSL
// 仓库设置
resolvers ++= Seq(
"Apache Repository" at "https://repository.apache.org/content/repositories/releases/",
"Maven Central" at "https://repo1.maven.org/maven2/",
"Cloudera Repository" at "https://repository.cloudera.com/artifactory/cloudera-repos/"
)
构建缓慢问题
创建 sbt 项目后,初始化项目很慢,最简单的项目都要几分钟左右。
如果想知道 sbt 构建时哪个操作比较耗时
参考:https://stackoverflow.com/questions/32588234/how-to-profile-the-time-spent-for-a-task-in-sbt
1.开启增量编译
在SBT中开启增量编译可以减少重复编译的时间。可以在build.sbt文件中添加以下内容:
// 开启增量编译
incremental := true
2.设置sbt使用的内存
// 并行执行设置
Test / parallelExecution := false
// 内存设置
run / fork := true
run / javaOptions ++= Seq(
"-Xms512M",
"-Xmx2G",
"-XX:MaxPermSize=512M"
)

浙公网安备 33010602011771号