使用SBT构建Scala项目 2014-12-24 08:05:37 [sbt](http://www.scala-sbt.org/)可是说是scala下的maven,用来构建项目甚是方便。 sbt使用Ivy管理包依赖,依赖的包会从maven中央库中下载,当然也可以指定特定的中央库。 sbt相比maven有一定的学习成本,但是他支持scala定义任务,而且描述项目信息比maven简单很多,支持增量式编译和交互式操作,所以还是非常值得学习一下的。 sbt的一些常用命令: * clean 删除target目录中所有自动生成的文件 * compile 编译main目录(src/main/scala, src/main/java)中的源文件 * test 编译并执行测试用例 * console 打开一个scala解释器,其classpath中包含所有已编译的源文件和依赖 * run 运行项目主文件,和sbt在同一个jvm上 * package 打包,创建一个jar,包含src/main/resources中的文件和src/main/scala, src/main/java中编译后的class文件 * help 显示命令帮助,如果没有命令,单只输入help,显示所有支持命令的基本描述 * reload 重新加载项目的构建定义,包括build.sbt, project/.scala, project/.sbt等文件,如果你修改了这些构建定义,可能需要用到. ## build.sbt说明 build.sbt最常用的功能就是描述项目信息和依赖的包。 build.sbt的一个示例: ``` name := "test-sbt" organization := "cn.zhaishidan" version := "1.0" scalaVersion := "2.10.4" scalaBinaryVersion := "2.10" resolvers ++= Seq( "OSChina Repository" at "http://maven.oschina.net/content/groups/public" ) libraryDependencies ++= { val scalaTestVersion = "2.1.5" val sparkVersion = "1.1.1" val akkaVersion = "2.2.3" val sprayCanVersion = "1.2.2" val sprayJsonVersion = "1.2.6" val slickVersion = "2.1.0" val slf4jVersion = "1.7.5" val log4jVersion = "1.2.17" val mysqlVersion = "5.1.6" Seq( "org.scalatest" %% s"scalatest" % scalaTestVersion, "org.apache.spark" %% s"spark-core" % sparkVersion, "org.apache.spark" %% s"spark-sql" % sparkVersion, "com.typesafe.akka" %% s"akka-actor" % akkaVersion, "io.spray" % "spray-can" % sprayCanVersion, "io.spray" %% s"spray-json" % sprayJsonVersion, "com.typesafe.slick" %% s"slick" % slickVersion, "org.slf4j" % "slf4j-api" % slf4jVersion, "org.slf4j" % "slf4j-log4j12" % slf4jVersion, "log4j" % "log4j" % log4jVersion, "mysql" % "mysql-connector-java" % mysqlVersion ) } ``` 主要注意的是: * build.sbt是scala的表达式片段,每行配置中必须使用空行隔开(sbt会转换为scala的Seq[T]类型,空行相当于逗号) * 关于`libraryDependencies`,%函数用于拼接依赖库信息,相当于Maven中的groupId % artifactId % version > 关于%%,两个%,表示让sbt根据你项目的scala版本自动为artifact添加上版本号 > 相当于artifactId_${scalaVersion.name} 关于SBT详细的使用说明,可以参考官方的文档: 英文:<http://www.scala-sbt.org/0.13/tutorial/index.html> 中文:<http://www.scala-sbt.org/0.13/tutorial/zh-cn/index.html> ## Loading project definition耗时长? 编辑`project/plugins.sbt`,将日志级别改为Debug:`logLevel := Level.Debug` 再次运行相关命令,看下sbt在干啥 ## 查找第三方库 到这里搜索需要用到的库:<http://www.mvnrepository.com/> 这上面有一个sbt的依赖语法,可以直接将其添加到build.sbt文件中: ![](/api/file/getImage?fileId=5ec7d4a166f3b358d5000a47) 非特殊说明,均为原创,原创文章,未经允许谢绝转载。 原始链接:使用SBT构建Scala项目 赏 Prev 关于逆变与协变 Next 那些美妙的音乐