- 什么是 SBT ?
- SBT 项目工程目录
- SBT 编译打包 Scala HelloWorld
1. SBT, What?
SBT 是 Simple Build Tool 的简称. SBT 可以认为是 Scala 世界的 maven。
SBT的着迷特性,比如:
- DSL build构建, 并可混合构建 Java 和 Scala 项目;
- 通过触发执行 (trigger execution) 特性支持持续的编译与测试;
- 可以重用 Maven 或者 ivy的repository 进行依赖管理;
- 增量编译、并行任务等等…
2. Hello, SBT
一个极致简单的 Scala项目 (hello simple project)
hello/HelloWorld.scala
1 | object HelloWorld { |
sbt run
1 | ➜ hello git:(master) ✗ sbt |
3. SBT 项目工程结构详解
一个典型的SBT项目工程结构如下图所示:
build.sbt 详解
build.sbt 相当于 maven-pom.xml,它是build定义文件。
SBT 运行 使用 2 种形式 的 build 定义文件,
- one, put your project’s base directory,-- build.sbt, a simple build definition;
- other one, put project directory,can Use Scala language, more expressive。
一个简单的build.sbt文件内容如下:
1 | name := "hello" // 项目名称 |
name 和 version的定义是必须的,因为如果想生成jar包的话,这两个属性的值将作为jar包名称的一部分, 各行之间以空行分隔。
除了定义以上项目相关信息,我们还可以在build.sbt中添加项目依赖:
1 | // 添加源代码编译或者运行期间使用的依赖 |
当然, build.sbt文件中还可以定义很多东西,比如添加插件,声明额外的repository,声明各种编译参数等等
project目录即相关文件介绍
project目录下的几个文件可以根据情况添加。
build.properties 文件声明使用的要使用哪个版本的SBT来编译当前项目, 最新的sbt boot launcher可以能够兼容编译所有0.10.x版本的SBT构建项目,比如如果我使用的是0.12版本的sbt,但却想用0.11.3版本的sbt来编译当前项目,则可以在build.properties文件中添加sbt.version=0.11.3来指定。
plugins.sbt 文件用来声明当前项目希望使用哪些插件来增强当前项目使用的sbt的功能,比如像assembly功能,清理ivy local cache功能,都有相应的sbt插件供使用, 要使用这些插件只需要在 plugins.sbt 中声明即可.
为了能够成功加载这些sbt插件,我们将他们的查找位置添加到resolovers当中.
其他
1 | touch build.sbt |
可以使用giter8来自动化以上步骤.
giter8的更多信息可参考https://github.com//giter8.
4. SBT Cmd
- actions – 显示对当前工程可用的命令
- update – 下载依赖
- compile – 编译代码
- test – 运行测试代码
- package – 创建一个可发布的jar包
- publish-local – 把构建出来的jar包安装到本地的ivy缓存
- publish – 把jar包发布到远程仓库(如果配置了的话)
more cmd
- test-failed – 运行失败的spec
- test-quick – 运行所有失败的以及/或者是由依赖更新的spec
- clean-cache – 清除所有的sbt缓存。类似于sbt的clean命令
- clean-lib – 删除lib_managed下的所有内容
5. Scala HelloWorld
SBT Scala HelloWorld 具体请看 : Scala-Projects/HelloWorld
➜ HelloWorld> sbt package
1 | [info] Loading project definition from /Users/hp/spark/HelloWorld/project |
➜ HelloWorld> sbt run
1 | [info] Loading project definition from /Users/hp/spark/HelloWorld/project |
6. Spark HelloWorld
Spark HelloWorld 具体请看 : Spark-Projects/HelloWorld
➜ HelloWorld> sbt compile
➜ HelloWorld> sbt package
1 | SPARK_HOME/bin/spark-submit \ |
7. Referenced#
参考 : scala-sbt.org/0.13/docs/zh-cn/Getting-Started.html
参考 : CSUG/real_world_scala/blob/master/02_sbt.markdown
参考 : scala-sbt.org/0.13.1/docs/Getting-Started
参考 : 译言网
Checking if Disqus is accessible...