sbt 弃用警告 <<= 替换为 := 结果未找到主要 class
sbt deprecation warning <<= replaced with := results in no main class found
使用 sbt 0.13.13 时。我可以观察到,当使用 :=
时,没有找到主要的 class(但没有显示弃用警告),对于 <<=
我收到了警告,但是主要的 class 是成立。这里有什么问题?
run in Compile := Defaults.runTask(fullClasspath in Compile, mainClass in(Compile, run), runner in(Compile, run))
run in Compile <<= Defaults.runTask(fullClasspath in Compile, mainClass in(Compile, run), runner in(Compile, run))
run
是一个 InputTask[Unit]
并且 runTask
的类型是 Def.Initialize[InputTask[Unit]]
而 :=
的右侧需要是一个 Unit
.
你所做的编译是因为任何值都可以被丢弃以支持 Unit
类型的 return 值,但它没有与以前相同的语义。
对于输入任务,您需要"evaluate"任务:
run in Compile := Defaults.runTask(
fullClasspath in Compile,
mainClass.in(Compile, run),
runner.in(Compile, run)).evaluated
使用 sbt 0.13.13 时。我可以观察到,当使用 :=
时,没有找到主要的 class(但没有显示弃用警告),对于 <<=
我收到了警告,但是主要的 class 是成立。这里有什么问题?
run in Compile := Defaults.runTask(fullClasspath in Compile, mainClass in(Compile, run), runner in(Compile, run))
run in Compile <<= Defaults.runTask(fullClasspath in Compile, mainClass in(Compile, run), runner in(Compile, run))
run
是一个 InputTask[Unit]
并且 runTask
的类型是 Def.Initialize[InputTask[Unit]]
而 :=
的右侧需要是一个 Unit
.
你所做的编译是因为任何值都可以被丢弃以支持 Unit
类型的 return 值,但它没有与以前相同的语义。
对于输入任务,您需要"evaluate"任务:
run in Compile := Defaults.runTask(
fullClasspath in Compile,
mainClass.in(Compile, run),
runner.in(Compile, run)).evaluated