在配置文件 .sbt這章已經(jīng)將了如何定義個(gè)配置,大部分配置定義在Default中
配置有三種類型,其中SettingKey和TaskKey已經(jīng)在配置文件 .sbt介紹了,InputKey在任務(wù)配置的輸入章節(jié)介紹。
對于配置的一些例子:
val scalaVersion = settingKey[String]("The version of Scala used for building.")
val clean = taskKey[Unit]("Deletes files produced by the build, such as generated sources, compiled classes, and task caches.")
創(chuàng)建配置的構(gòu)造方法有兩個(gè)參數(shù),分別是配置的名稱("scalaVersion")和一個(gè)描述該配置的字符串("The version of scala used for building.")。
在配置文件 .sbt中介紹在SettingKey[T]中的T表示該配置值得類型,在TaskKey[T]中T代表該任務(wù)返回的類型。并且也介紹了一個(gè)參數(shù)配置是一個(gè)常量,其在項(xiàng)目加載的時(shí)候就初始化好了,而一個(gè)任務(wù)配置是可以重復(fù)執(zhí)行的(任何時(shí)候在交互模式下或批量腳本中都可以調(diào)用執(zhí)行)
所有的配置都定義在 .sbt, .scala文件或插件中,任何的在.scala配置文件中或在插件中的配置都將自動(dòng)的合并到 .sbt 文件中。
當(dāng)定義完一個(gè)任務(wù)配置后,需要實(shí)現(xiàn)一個(gè)任務(wù)配置。可以自己實(shí)現(xiàn)一個(gè)任務(wù),也可以重載一個(gè)已經(jīng)存在的任務(wù),兩者配置的方式?jīng)]有任何區(qū)別。通過:=方法來關(guān)聯(lián)任務(wù)配置來實(shí)現(xiàn)一個(gè)任務(wù),例如:
val sampleStringTask = taskKey[String]("A sample string task.")
val sampleIntTask = taskKey[Int]("A sample int task.")
sampleStringTask := System.getProperty("user.home")
sampleIntTask := {
val sum = 1 + 2
println("sum: " + sum)
sum
}
如果一個(gè)任務(wù)有依賴關(guān)系,可以直接引用依賴的配置,在配置參數(shù)的方法 一章已經(jīng)介紹了。
實(shí)現(xiàn)任務(wù)最難的部分是用Scala代碼實(shí)現(xiàn)該任務(wù)具體執(zhí)行過程,例如,可以編寫一個(gè)格式化HTML的任務(wù)用相關(guān)的HTML lib 庫(自己可以定義添加一個(gè)依賴庫,在該基礎(chǔ)上編寫)
sbt 也提供了一些工具庫,例如常用的文件和目錄操作API等。
如果有許多通用的代碼,可以將其提取到一個(gè)插件中,可以實(shí)現(xiàn)多項(xiàng)目的復(fù)用。