我在尝试运行的项目的sbt.build文件中有以下代码:
lazy val buildAssistantJs = taskKey[Unit]("Build assistant JavaScript frontend")
buildAssistantJs := {
println("Building assistant JavaScript frontend...")
"npm install" #&& "npm update" #&& "npm run assistant-build" !
}
stage := stage dependsOn buildAssistantJs
当我执行 SBT 运行时,这给了我以下错误:
error: type mismatch;
found : sbt.Def.Initialize[sbt.Task[sbt.File]]
(which expands to) sbt.Def.Initialize[sbt.Task[java.io.File]]
required: sbt.File
(which expands to) java.io.File
stage := stage dependsOn buildAssistantJs
^
[error] Type error in expression
有没有人知道为什么会这样以及如何解决错误?请注意,我正在尝试在Windows上运行它,以防这有任何不同。
注意:我使用的是 Scala 版本 2.11.4 和 sbt 版本 1.0.2。
SBT的tasks
和settings
是一种特殊的品种,你不能在你的代码中逐字面地使用它们。只有在定义其他任务(或设置(时才能使用它们,这会在它们之间引入依赖关系。
如果要使用任务值,则需要说明:
stage := (stage dependsOn buildAssistantJs).value