SBT 弃用警告 <<= 替换为 := 导致找不到主类



使用 sbt 0.13.13 时。我可以观察到,当使用:=时,找不到主类(但没有显示弃用警告(,并且<<=我收到警告,但找到了主类。这是怎么回事?

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 类型的返回值,但它没有与以前相同的语义。

对于输入任务,您需要"评估"任务:

run in Compile := Defaults.runTask(
  fullClasspath in Compile,
  mainClass.in(Compile, run),
  runner.in(Compile, run)).evaluated

最新更新