如何在 sbt 中“重新运行带有-depreation 的详细信息”?

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

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

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

33122 次浏览

贝壳

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

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

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

命令行

您也可以在命令行上以单个命令的形式运行以上命令。

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

诀窍是使用 ;(分号)分隔命令,使用 '(刻度)包含所有 ;分隔的命令作为 sbt 的一个参数。

Sbt < 1. x

使用 scalacOptions in ThisBuild代替 ThisBuild/scalacOptions

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

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

随着时间的推移,出现了新的解决方案。因此,现在您可以重新运行 scala 编译器,而无需发出整个项目重建。

你需要安装 Senme-sbt 插件:

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

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

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