sbt 编译失败,选项错误:'-Ywarn-macros:after'

sbt compile fails with bad option: '-Ywarn-macros:after'

build.sbt 文件如:

ThisBuild / organization := "com.company"
ThisBuild / version := "1.0.0-SNAPSHOT"
ThisBuild / scalaVersion := "2.11.12"

Global / concurrentRestrictions += Tags.limit(Tags.Test, 1)

Global / scalacOptions ++= Seq("-Ypartial-unification",
                               "-unchecked",
                               "-Xfatal-warnings",
                               "-Ywarn-dead-code",
                               "-Ywarn-inaccessible",
                               "-Ywarn-unused",
                               "-Ywarn-unused-import",
                               "-Ywarn-macros:after")

我在 运行 sbt clean compile

之后得到 [error] bad option: '-Ywarn-macros:none'

如果没有 -Ywarn-macros:after,未使用的导入警告会在使用 Circe 宏的文件中引发虚假警告,例如:import io.circe.{ Decoder, Encoder }

-Ywarn-macros 直到 Scala 2.12 才被添加,所以这个错误是意料之中的。

你能升级到 Scala 2.12 吗?如果你卡在 2.11 上,也许你需要在没有 -Ywarn-unused-import 的情况下生活。 (由于 Som Snytt 的不懈努力,随着 2.12.x 系列的进步,未使用的警告总体上有了很大改善。)

您可以将使用 Circe 的代码限制在一个子项目中,然后仅在该子项目中禁用未使用的警告,以便在您的代码库的其余部分中启用它们。

另一种可能性是尝试 https://github.com/ghik/silencer