【问题标题】:Define a `Task` setting with a `Task` in sbt 0.13.13在 sbt 0.13.13 中使用“Task”定义一个“Task”设置
【发布时间】:2016-11-11 07:21:46
【问题描述】:

我正在尝试在使用 sbt 0.13.13 时删除此设置的弃用警告

task <<=
 (streams in Test, 
  loadedTestFrameworks in Test, 
  testLoader in Test,
  testGrouping in Test in test, 
  testExecution in Test in task,
  fullClasspath in Test in test, 
  javaHome in test) flatMap Defaults.allTestGroupsTask


 warning: `<<=` operator is deprecated. 
  Use `key := { x.value }` or `key ~= (old => { newValue })`.
  See http://www.scala-sbt.org/0.13/docs/Migrating-from-sbt-012x.html

&lt;&lt;= 运算符现已弃用,但我不知道如何重写上面的表达式。

我试着改写为:

task := Defaults.allTestGroupsTask(
  (streams in Test).value,
  (loadedTestFrameworks in Test).value,
  (testLoader in Test).value,
  (testGrouping in Test in test).value,
  (testExecution in Test in task).value,
  (fullClasspath in Test in test).value,
  (javaHome in test).value)

但我无法使用 :=Task[A] 分配给 TaskKey

那么我应该怎么做才能删除&lt;&lt;=

【问题讨论】:

  • allTestGroupsTask 返回Task[Output],所以你要么想申请.value,要么申请.taskValue
  • .value 最后引发error: Illegal dynamic dependency,我找不到.taskValue,它在哪里?

标签: scala sbt


【解决方案1】:

尝试使用Def.taskDyn

task := Def.task {
  Def.task {
    Defaults.allTestGroupsTask(
      (streams in Test).value,
      (loadedTestFrameworks in Test).value,
      (testLoader in Test).value,
      (testGrouping in Test in test).value,
      (testExecution in Test in task).value,
      (fullClasspath in Test in test).value,
      (javaHome in test).value
    )
  }.value
}.value

【讨论】:

  • 我得到`找到:sbt.Tests.Output`required: sbt.Def.Initialize[sbt.Task[?]] task := Def.taskDyn(Defaults.allTestGroupsTask(
  • 如果我最后一次尝试.value 我会得到found : sbt.Tests.Output required: sbt.Def.Initialize[sbt.Task[?]] task := Def.taskDyn(Defaults.allTestGroupsTask(
  • 密钥task在哪里定义?它是什么类型的?
  • task 定义为task: TaskKey[Tests.Output]。我的总体目标是有一个测试任务,我可以像 testOnly -- some options 一样从 sbt 内部运行。
  • 嵌套两个 Def.task 调用似乎可以做到[编辑:更新答案以显示这一点]。请注意,您的范围之一是`在任务中的测试中, instead of 在测试中的测试中`。这可能会导致错误。
猜你喜欢
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
相关资源
最近更新 更多