#onenote# sbt

快速参考

常用命令

      • actions – 显示这个项目中可用的动作
      • update – 下载依赖
      • compile – 编译源文件
      • test – 运行测试
      • package – 创建一个可发布的jar文件
      • publish-local – 在本地ivy缓存中安装构建好的jar包
      • publish – 将你的jar推到一个远程库中(如果配置了的话)

更多命令

      • test-failed – 运行所有失败的规格测试
      • test-quick – 运行任何失败的和/或依赖更新的规格
      • clean-cache – 删除SBT缓存各种的东西。就像sbt的clean命令
      • clean-lib – 删除lib_managed下的一切

 

 

 

Sample

SBT认为project/build目录中的Scala文件是项目定义。添加以下内容到这个文件中project/build/SampleProject.scala

import sbt._

class SampleProject(info: ProjectInfo) extends DefaultProject(info) {
val jackson = “org.codehaus.jackson” % “jackson-core-asl” % “1.6.1”
val specs = “org.scala-tools.testing” % “specs_2.8.0” % “1.6.5” % “test”
}

一个项目定义是一个SBT类。在上面例子中,我们扩展了SBT的DefaultProject。

这里是通过val声明依赖。SBT使用反射来扫描项目中的所有val依赖,并在构建时建立依赖关系树。这里使用的语法可能是新的,但本质和Maven依赖是相同的

<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.scala-tools.testing</groupId>
<artifactId>specs_2.8.0</artifactId>
<version>1.6.5</version>
<scope>test</scope>
</dependency>

 

打包和发布

现在我们已经可以运行package命令来生成一个jar文件。不过我们可能要与其他组分享我们的jar包。要做到这一点,我们将在StandardProject基础上构建,这给了我们一个良好的开端。

第一步是引入StandardProject为SBT插件。插件是一种为你的构建引进依赖的方式,注意不是为你的项目引入。这些依赖关系定义在project/plugins/Plugins.scala文件中。添加以下代码到Plugins.scala文件中。

import sbt._

class Plugins(info: ProjectInfo) extends PluginDefinition(info) {
val twitterMaven = “twitter.com” at “http://maven.twttr.com/
val defaultProject = “com.twitter” % “standard-project” % “0.7.14”
}

注意我们指定了一个Maven仓库和一个依赖。这是因为这个标准项目库是由twitter托管的,不在SBT默认检查的仓库中。

我们也将更新项目定义来扩展StandardProject,包括SVN发布特质,和我们希望发布的仓库定义。修改SampleProject.scala

import sbt._
import com.twitter.sbt._

class SampleProject(info: ProjectInfo) extends StandardProject(info) with SubversionPublisher {
val jackson = “org.codehaus.jackson” % “jackson-core-asl” % “1.6.1”
val specs = “org.scala-tools.testing” % “specs_2.8.0” % “1.6.5” % “test”

override def subversionRepository = Some(“http://svn.local.twitter.com/maven/&#8221;)
}

 

 

添加任务

任务就是Scala函数。添加一个任务最简单的方法是,在你的项目定义中引入一个val定义的任务方法,如

lazy val print = task {log.info(“a test action”); None}

你也可以这样加上依赖和描述

lazy val print = task {log.info(“a test action”); None}.dependsOn(compile) describedAs(“prints a line after compile”)

 

 

Pasted from <https://twitter.github.io/scala_school/zh_cn/sbt.html>

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s