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

时间:2019-02-12 17:59:17

标签: scala sbt compiler-flags circe scalac

使用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")

运行[error] bad option: '-Ywarn-macros:none'后我得到sbt clean compile

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

1 个答案:

答案 0 :(得分:5)

-Ywarn-macros直到Scala 2.12才添加,因此可能会出现错误。

您可以升级到Scala 2.12吗?如果您坚持使用2.11,也许您将需要没有-Ywarn-unused-import生活。 (由于Som Snytt的不懈努力,总体上,未使用的警告随着2.12.x系列的发展而大大改善。)

您也许可以将使用Circe的代码限制在一个子项目中,然后仅在该子项目中禁用未使用的警告,以便在其余代码库中将其保持启用状态。

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