2017-07-11 4 views
0

SBTでカスタムタスクを定義しようとしています。私が書いたコードはメソッドスコープ付きオブジェクトのt4ToTable4は推奨されていません:SBT 0.10スタイルのDSLは廃止予定です:

lazy val slick = TaskKey[Seq[File]]("gen-tables") 
lazy val slickCodeGen = (sourceManaged, dependencyClasspath in Compile, runner in Compile, streams) map {(dir, cp, r, s) => 
    .... 
} 

である私は警告

warning: method t4ToTable4 in object Scoped is deprecated: The sbt 0.10 style DSL is deprecated: '(k1, k2) map { (x, y) => ... }' should now be '{ val x = k1.value; val y = k2.value }'. 
See http://www.scala-sbt.org/0.13/docs/Migrating-from-sbt-012x.html 
lazy val slickCodeGen = (sourceManaged, dependencyClasspath in Compile, runner in Compile, streams) map {(dir, cp, r, s) => 

を取得するだから私は警告

val sourceManagedValue = sourceManaged.value 

に提案どおりに私のコードを変更し、今私はエラーを取得

error: `value` can only be used within a task or setting macro, such as :=, +=, ++=, Def.task or Def.setting 

答えて

1

設定が定義されていない場合(例:foo := bar)、Def.setting/Def.task/Def.inputTask(またはより高度なケースの場合はDef.settingDyn/Def.taskDyn/Def.inputTaskDyn)にラッピングする必要があります。あなたのケースのためにそう

lazy val slickCodeGen = Def task { 
    val dir = sourceManaged.value 
    val cp = (dependencyClasspath in Compile).value 
    val r = (runner in Compile).value 
    val s = streams.value 
    ??? 
} 
関連する問題