web-dev-qa-db-ja.com

組み込みのSBTタスクに新しいタスクの依存関係を追加しますか?

組み込みのSBTタスク(コンパイルなど)をオーバーライドまたは変更して、自分のBuild.scalaのカスタムタスクに依存させることはできますか?オーバーライド例: 「コンパイル」はlazyvalで定義されているため、直接実行できません。したがって、super.compileを参照すると、「superはlazy値で使用されない可能性があります」というコンパイラエラーが発生します。

29
Eemeli Kantola

この質問は、SBTに依存関係を追加する方法をグーグルで検索するときに表示され、現在の回答は .13.xで非推奨 であり、1.0で削除されているため、printActionと仮定して更新された回答を次に示します。 compileが依存する必要があるタスクは次のとおりです。

(Compile / compile) := ((Compile / compile) dependsOn printAction).value

24
arussell84

更新:これを行うための最新の方法については、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
}
18
James Moore

自己への返信: 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)
}
7
Eemeli Kantola