Contents
sbt Reference Manual
sbt 入门
安装 sbt
提示和技巧
在 macOS 上安装 sbt
Install sbt with cs setup
Install JDK
通过 SDKMAN! 安装
通过通用的包安装
通过第三方的包安装
通过 Homebrew 安装
在 Windows 上安装 sbt
Install sbt with cs setup
通过通用的安装包安装
通过 Windows 安装包安装
通过第三方的包安装
通过 Scoop 安装
在 Linux 上安装 sbt
Install sbt with cs setup
Installing from SDKMAN
Install JDK
通过通用的安装包安装
Ubuntu和其他基于Debian的发行版
红帽企业版Linux和其他基于RPM的发行版
Gentoo
Hello, World
创建一个有源码的项目目录
构建定义
设置 sbt 版本
目录结构
基础目录
源代码
sbt 构建定义文件
构建产品
配置版本管理
运行
交互模式
批处理模式
持续构建和测试
常用命令
Tab 自动补全
命令历史记录
.sbt 构建定义
构建定义的二种风格
什么是构建定义?
如何在 build.sbt 中定义设置
键(Keys)
类型(Types)
内置的 Keys
自定义 Keys
Task vs Setting keys
定义 tasks 和 settings
Tasks 和 Settings 的类型
sbt 交互模式中的 Keys
build.sbt 中的引入
bare .sbt 构建定义
添加依赖库
任务图
术语
声明对其他任务的依赖
内联 .value 调用
检查任务
定义依赖于其他 setting 的任务
定义取决于其他 setting 的 setting
build.sbt DSL 的意义是什么?
Make 简介
Rake
基于混合 flow-based 编程的好处
摘要
Scope
关于 Key 的所有故事
Scope 轴
通过 Project 轴划分 Scope
通过 Configuration 轴划分 Scope
通过 Task 轴划分 Scope
全局 Scope
代理
运行 sbt 时涉及 scope 下的 key
使用 scoped key 标识的例子
审查 scope
在构建定义中涉及 scope
指定 scope 的时机
追加值
追加值: += 和 ++=
当设置未定义时
依赖于其他 key 的值的 task
追加依赖: += 和 ++=
Scope 委托 (.value 查找)
scope 委托规则
规则1: scope 轴优先级
规则2: task 轴委托
规则3:configuration 轴搜索路径
规则4:subproject 轴搜索路径
scope 轴优先级再次
inspect 命令列出委托
.value 查找与动态调度
库依赖
非托管依赖
托管依赖
libraryDependencies Key
通过 %% 方法获取正确的 Scala 版本
Ivy 修正
解析器
覆写默认的解析器
Per-configuration dependencies
多项目构建
多项目
公共设定
依赖
Aggregation
Classpath 依赖
configuration 粒度的 classpath 依赖
默认的 root 项目
交互式引导项目
通用代码
Appendix: Subproject build definition files
使用插件
什么是插件
声明一个插件
启用和禁用自动插件
全局插件
可用的插件
自定义设置和任务
定义一个键
执行任务
任务的执行语义
任务依赖项去重
清理任务
直接使用Scala
将它们转为插件
组织构建
sbt是递归的
在同一个地方跟踪依赖项
何时用 .scala 文件
定义自动插件
总结
sbt: 核心概念
附录
Contents in Depth
Combined Pages
Learn
Download
Get Involved