sbt构建工具
sbt
简介
sbt是一个简单的项目构建工具,类似于Maven。SBT是Simple Build Tool的首字母缩写,而因为我们多用其来构建Scala项目,所以另一种说法是Scala Build Tool。在当前的情况下,Maven多用于Java项目的构建,而sbt则面向scala项目。
sbt的官网为scala-sbt.org,其中很容易找到下载的界面。在下载之前首先需要准备好Java环境。下载好压缩包,之后解压到对应的路径,并配置好相关的环境变量$SBT/bin
即可。
配置好环境变量之后,可以在命令行中输入sbt --version
查看当前sbt的版本。
Getting Started
安装好了sbt之后,我们就可以构建一个简单的scala项目。sbt构建项目同Maven一样对项目目录有一定的要求。sbt除了会检查在项目根目录下的文件之外,也与Maven一样,会检查以下路径中的文件:
src/main/scala
或src/main/java
中的源文件src/test/scala
或src/test/java
中的测试文件src/main/resources
或src/test/resources
中的数据文件lib
中的jar文件
那么我们现在可以构建如下目录的项目,目录结构如下:
1 |
|
在源文件目录下的hello.scala
中是一个简单的scala
Object:
1 |
|
在命令行中进入项目目录,执行sbt
命令,就会进入到sbt的交互式命令行模式。然后执行run
命令,sbt就会自动扫描找到对应的入口方法并执行,像上面的项目,执行的效果就是:
1 |
|
在执行完命令之后,在项目目录下会出现两个新目录,分别是/project
和/target
。在project
目录下会生成一个build.properties
文件,其中指定了sbt的版本。修改这个文件中的内容可以强制指定需要使用的sbt版本。虽然sbt在不同的release版本中是基本兼容的,但是在/project/build.properties
中设置sbt的版本仍然能够避免一些潜在的混淆情况。
常用命令
下面是一些常用的sbt命令:
命令 | 命令功能 |
---|---|
clean |
删除所有生成的文件 (在 target 目录下) |
compile |
编译源文件(在 src/main/scala 和
src/main/java 目录下) |
test |
编译和运行所有测试 |
console |
进入到一个包含所有编译的文件和所有依赖的 classpath 的 Scala shell中 |
run <参数>* |
执行项目的 main class |
package |
将 src/main/resources 下的文件和
src/main/scala 以及 src/main/java 中编译出来的
class 文件打包成一个 jar 文件 |
help <命令> |
显示指定的命令的详细帮助信息。如果没有指定命令,会显示所有命令的简介 |
reload |
重新加载构建定义(build.sbt ,
project/*.scala , project/*.sbt
这些文件中定义的内容)。在修改了构建定义文件之后需要重新加载 |
构建设置
在Maven中,我们构建项目的配置会放在根目录的pom.xml
文件中。而在sbt中,承担这一角色的是项目根目录下的build.sbt
文件。.sbt
后缀的文件使用的是兼容Scala的特殊语法。
在项目的基础目录中存在 build.sbt
。而其他的 sbt 文件在
project
子目录中。 project
目录中还可以包含
.scala
文件,这些文件最后会和 .sbt
文件合并共同构成完整的构建设置。
每个工程实际上都可以对应到一个映射表,这个映射表是众多键值对的集合,这些键值对信息就可以用来描述这个工程。例如我们可以在根目录下的build.sbt
文件中输入如下内容:
1 |
|
这就是在settings中指定了项目的名称,版本号等。name和version属性会在项目打包时作为包名的一部分,而organization则会作为包名的前缀。再次进入sbt命令行,可以通过show name
来查看当前项目的名称:
1 |
|
同时我们还可以在build.sbt
中声明依赖。依赖分为第三方的依赖以及本地jar包的依赖。
第三方的依赖通常都会提供对应的配置,我们同样可以在Maven Repository中找到对应的依赖配置,配置模式如下:
1 |
|
而本地的依赖我们可以统一将其管理在对应的目录下,例如项目根目录下的/myLib
,对应的jar包都放在该目录下,之后在文件中增加如下配置,这里的baseDirectory
指的就是项目根目录。
1 |
|
完成依赖配置之后,就可以运行sbt update
命令来进行依赖的下载与配置。