如何在 sbt 中“使用 -deprecation 重新运行以获取详细信息”?
Posted
技术标签:
【中文标题】如何在 sbt 中“使用 -deprecation 重新运行以获取详细信息”?【英文标题】:How to "re-run with -deprecation for details" in sbt? 【发布时间】:2012-03-23 15:01:05 【问题描述】:当我编译 Scala 代码时,通过运行 sbt compile
,SBT 说:
$ sbt compile
...
[warn] there were 5 deprecation warnings; re-run with -deprecation for details
...
我该怎么做? (来自 SBT 内部?)
【问题讨论】:
***.com/questions/9415962/…的类似问题(包括您的问题的答案) 【参考方案1】:sbt 外壳
在 sbt shell 中(如果您不想更改 build.sbt
):
$ sbt
> set ThisBuild/scalacOptions ++= Seq("-unchecked", "-deprecation")
> compile
> exit
由于in ThisBuild
,set
也将设置应用于所有子项目。
命令行
您也可以在命令行上将上述内容作为单个命令运行。
sbt '; set ThisBuild/scalacOptions ++= Seq("-unchecked", "-deprecation") ; compile'
诀窍是使用;
(分号)分隔命令,使用'
(记号)将所有;
分隔的命令作为单个参数包含在sbt 中。
sbt
用scalacOptions in ThisBuild
代替ThisBuild/scalacOptions
【讨论】:
@retronym:in Global
而不是 in ThisBuild
也同样适用于子项目——但为什么首选后者?还是这样?【参考方案2】:
scalacOptions := Seq("-unchecked", "-deprecation")
将此设置添加到您的 build.sbt,如果您有一个多模块项目,请将其添加到每个项目的设置中。
【讨论】:
【参考方案3】:随着时代的发展,新的解决方案不断涌现。因此,现在您可以重新运行 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
【讨论】:
添加 Ensime 只是为了获得-deprecation
是一个糟糕的主意。 Ensime 用于支持编辑器中的动态注释。除此之外,Ensime 本身在某些类型的项目(尤其是那些大量使用宏的项目)中存在许多问题。
ensime 插件是胖语言服务器的小伙伴。您可以单独使用它。或者可以只是从中复制一些功能。以上是关于如何在 sbt 中“使用 -deprecation 重新运行以获取详细信息”?的主要内容,如果未能解决你的问题,请参考以下文章
如何在依赖 URL 中下载没有 SBT 版本的 sbt 插件依赖?
如何在子项目中使用 sbt native packager (sbt 0.13)