当我通过运行sbt compile
编译Scala代码时,SBT会提示:
$ sbt compile
...
[warn] there were 5 deprecation warnings; re-run with -deprecation for details
...
我该怎么做?(从SBT内部进行?)
如果你不想改变你的build.sbt
,在sbt shell中:
$ sbt
> set ThisBuild/scalacOptions ++= Seq("-unchecked", "-deprecation")
> compile
> exit
由于使用了in ThisBuild
,set
会同时将设置应用到所有子项目中。
您也可以在命令行上将上述内容作为单个命令运行。
sbt '; set ThisBuild/scalacOptions ++= Seq("-unchecked", "-deprecation") ; compile'
关键是使用 ;
(分号)来分隔命令,并使用 '
(反引号)将所有以 ;
分隔的命令作为单个参数包含在 sbt 中。
使用 scalacOptions in ThisBuild
替代 ThisBuild/scalacOptions
scalacOptions := Seq("-unchecked", "-deprecation")
将以下设置添加到您的 build.sbt 文件中,如果您有一个多模块项目,请将它添加到每个项目的设置中。
addSbtPlugin("org.ensime" % "sbt-ensime" % "1.0.0")
之后,您可以使用ensimeCompileOnly
任务来编译单个文件。SBT允许每个任务进行设置配置,因此您可以仅更改该任务的设置:
set scalacOptions in (Compile, EnsimeKeys.ensimeCompileOnly) += "-deprecation"
ensimeCompileOnly src/main/scala/MyFile.scala
-deprecation
而添加Ensime是一个糟糕的想法。Ensime是用于支持编辑器中的即时注释的。此外,Ensime本身在某些类型的项目(尤其是那些大量使用宏的项目)中存在许多问题。 - Zaphod