昔似たような違うものを使ったことがありますが、違うものです
cleanのものとは依存を辿る向きが逆ですね。
val a1 = project val a2 = project.dependsOn(a1) val b1 = project.dependsOn(a2) val b2 = project.dependsOn(b1) val b3 = project.dependsOn(b2) val c1 = project.dependsOn(a2) val c2 = project.dependsOn(c1)
上記のような状態のprojectがあったとき
- b1を変更した
- その際に、影響あるところだけをcompileまたはtestしたい
- b1をcompileすれば、依存したa1, a2は、どうせ勝手にcompileはされる
- しかしa1, a2, c1, c2のtestは必要ないはず
- c1やc2はcompileすら必要ないはず
- b2やb3はcompileやtestしたい
みたいな需要。上記の(逆に辿る)依存を、project多すぎると手動で頑張るの辛いので、自動で導出したい。
よって作ったものが以下
- 以前作ったtaskAllのコードや仕組みを半分以上流用
- 以下taskAllと同じで
- task名やsub project名もtab補完もされるように
- sub project名は複数指定可能
- 正規表現あるいはstartsWithで、いい感じに複数指定可能
ちなみにbuild.sbtでは dependsOn(a2 % "test")
などのConfiguration指定でdependsOnが可能ですが、そこの部分は面倒なので見ていません
https://gist.github.com/xuwei-k/bbe794441c99984f9d1a6cdb0dbe41bd