如何在sbt中“重新运行-deprecation for details”?

时间:2012-03-06 05:46:32

标签: sbt

当我编译Scala代码时,通过运行sbt compileSBT说:

$ sbt compile
...
[warn] there were 5 deprecation warnings; re-run with -deprecation for details
...

我该怎么做? (从SBT内部?)

4 个答案:

答案 0 :(得分:211)

sbt shell

在sbt shell中(如果你不想改变你的build.sbt):

$ sbt
> set scalacOptions in ThisBuild ++= Seq("-unchecked", "-deprecation")
> compile
> exit

由于in ThisBuildset也会将设置应用于所有子项目。

命令行

您也可以在命令行上将上述命令作为单个命令运行。

sbt '; set scalacOptions in ThisBuild ++= Seq("-unchecked", "-deprecation") ; compile' 

诀窍是使用;(分号)来分隔命令和'(ticks)以包含所有; - 分隔的命令作为sbt的单个参数。

答案 1 :(得分:21)

scalacOptions := Seq("-unchecked", "-deprecation")

将此设置添加到build.sbt中,如果您有多模块项目,请将其添加到每个项目的设置中。

答案 2 :(得分:-1)

这对我有用。

sbt compile -deprecation

注意:看来-deprecation在sbt控制台中不起作用。

答案 3 :(得分:-2)

随着时间流逝,出现了新的解决方案。所以,现在你可以在不发出整个项目重建的情况下重新运行scala编译器。

您需要安装ensime-sbt plugin

addSbtPlugin("org.ensime" % "sbt-ensime" % "1.0.0")

之后,您可以使用ensimeCompileOnly任务来编译单个文件。 SBT允许每个任务设置配置,因此您只能更改该任务:

set scalacOptions in (Compile, EnsimeKeys.ensimeCompileOnly) += "-deprecation"
ensimeCompileOnly src/main/scala/MyFile.scala