sbt 0.9でCompileに依存するタスクを書く
sbt 0.9むずかしい!
sbt 0.7と比べてシンプルになった部分とそうでない部分の差が激しいと思う。
良い子のみんなはstable版の0.10から使い始めるといいよ。悪い子は今すぐsbt 0.9.7を落とそう!
もちろん本家はこっち
このwikiとソースくらいしか頼りにならないからみなさん早く使いましょう
project/Build.scala
Keys.compile in Compileっていうのがポイント。
Commands · harrah/xsbt Wiki · GitHubにちょろっと書いてある。
import sbt._ object MyBuild extends Build { lazy val projects = Seq(root) lazy val root = Project("root", file("."), settings = Defaults.defaultSettings ++ rootSettings) lazy val rootSettings = Seq( hogeTask := println("hoge"), hogeTask <<= hogeTask.dependsOn(Keys.compile in Compile) ) lazy val hogeTask = TaskKey[Unit]("hoge-task") }
実行結果
inspectコマンドを打ったりすると依存関係がわかる。
ちゃんとCompileのあとにhoge-taskが動いている!
> inspect hoge-task [info] Task [info] Description: [info] [info] Provided by: [info] {file:/home/voidy21/prog/hoge/}root/*:hoge-task [info] Dependencies: [info] {file:/home/voidy21/prog/hoge/}root/compile [info] Delegates: [info] {file:/home/voidy21/prog/hoge/}root/*:hoge-task [info] {file:/home/voidy21/prog/hoge/}/*:hoge-task [info] */*:hoge-task > hoge-task Compiling: /home/voidy21/prog/hoge/src/main/scala/Main.scala Traversing /home/voidy21/prog/hoge/src/main/scala/Main.scala API phase took : 0.038 s hoge [success] Total time: 3 s, completed 2011/05/24 0:41:20