在我试图运行的一个项目的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 run时,会出现以下错误:
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。
发布于 2018-07-02 00:26:23
SBT的tasks
和settings
是一种特殊的类型,您不能在代码中直接使用它们。只有在定义其他任务(或设置)时才能使用它们,这会引入它们之间的依赖关系。
如果你想使用tasks值,你需要这样说:
stage := (stage dependsOn buildAssistantJs).value
https://stackoverflow.com/questions/51123643
复制相似问题