一个build definition定义了一系列的Setting[T]
, 每一个 Setting[T]
都是一种变形转换,每一个变形转换都会直接影响到sbt中的键值对,其中T是键值对中值的数据类型。也就是说每一个Setting[T]表现为一个键值对。但Scala中的键值对比属性文件(properties)中的键值对要复杂,它每一个键值对都是一个Scala表达式。
Build definition用.sbt或.scala文件都可以定义,只是方式有点不同。
Keys
一共有三种keys:
- SettingKey[T]: 一个key和只计算一次的value(project加载时计算出来,之后都不会再变)。
- TaskKey[T]: 一个key和每次都会运行的值。
- InputKey[T]: 一个key,value是命令行参数。
Values
Unit是Scala中的void。
build.sbt如何定义
settings
一个build.sbt文件就是一系列由换行符分开的的Setting。每一个Setting都是一个Scala 表达式。
name := "hello"Keys有一个方法叫“
:=
”,
这个方法返回一个
Setting[T]
。因此你也可以使用类似Java的语法调用这个方法:
name.:=("hello")内嵌Keys
内嵌的keys都包含在Keys这个对象中。Build.sbt隐含了imports bt.Keys._。
自定义的keys可以定义在.scala文件或plugin中。
TaskKey[T]
在sbt交互模式中,输入task的名字就会运行这个task。但是默认不会显示task 的结果,如果需要,得使用 show <task name> 的方式,而不是直接输入task name。
Imports in build.sbt
一共有三个隐含的imports:
import sbt._ import Process._ import Keys._
添加库依赖
有两种方法可以实现:
1. 直接把jars包放入lib/目录;
2. 在.sbt中添加类似表达式:
libraryDependencies +="org.apache.derby" % "derby" % "10.4.1.3"