組み込みのSBTタスク(コンパイルなど)をオーバーライドまたは変更して、自分のBuild.scalaのカスタムタスクに依存させることはできますか?オーバーライド例: 「コンパイル」はlazyvalで定義されているため、直接実行できません。したがって、super.compileを参照すると、「superはlazy値で使用されない可能性があります」というコンパイラエラーが発生します。
この質問は、SBTに依存関係を追加する方法をグーグルで検索するときに表示され、現在の回答は .13.xで非推奨 であり、1.0で削除されているため、printAction
と仮定して更新された回答を次に示します。 compile
が依存する必要があるタスクは次のとおりです。
(Compile / compile) := ((Compile / compile) dependsOn printAction).value
更新:これを行うための最新の方法については、arussell84の回答を参照してください
あなたはこのようにそれを行うことができるはずです:
.sbtファイル内:
compile <<= (compile in Compile) dependsOn jruby
Jrubyは、project /something.scalaファイルで定義したタスクキーです。
val jruby = TaskKey[Unit]("jruby", "run a jruby file")
また、これはあなたの質問の一部ではありませんが、通常のScala code:
compile <<= (compile in Compile) map { result =>
println("in compile, something")
result
}
自己への返信: http://code.google.com/p/simple-build-tool/wiki/ProjectDefinitionExamples#Insert_Task_Dependency 答えを教えてくれます:
古い0.7.xSBTバージョンを使用している場合は、次のことができます。
import sbt._
class SampleProject(info: ProjectInfo) extends DefaultProject(info) {
lazy val printAction = task { print("Testing...") }
override def compileAction = super.compileAction dependsOn(printAction)
}