sbt:在编译测试时设置特定的scalacOptions选项

时间:2016-06-04 12:53:35

标签: scala sbt

通常我使用这组选项来编译Scala代码:

scalacOptions ++= Seq(
    "-deprecation",
    "-encoding", "UTF-8",
    "-feature",
    "-unchecked",
    "-language:higherKinds",
    "-language:implicitConversions",
    "-Xfatal-warnings",
    "-Xlint",
    "-Yinline-warnings",
    "-Yno-adapted-args",
    "-Ywarn-dead-code",
    "-Ywarn-numeric-widen",
    "-Ywarn-value-discard",
    "-Xfuture",
    "-Ywarn-unused-import"
)

但有些人不能很好地使用ScalaTest,所以我想在编译测试时禁用-Ywarn-dead-code-Ywarn-value-discard

我尝试添加这样的范围

scalacOptions in Compile ++= Seq(...)

scalacOptions in (Compile, compile) ++= Seq(...)

甚至

val ignoredInTestScalacOptions = Set(
    "-Ywarn-dead-code",
    "-Ywarn-value-discard"
)

scalacOptions in Test ~= { defaultOptions =>
  defaultOptions filterNot ignoredInTestScalacOptions
}

但前两个禁用正常编译范围的选项,而后者不影响测试编译选项。

编译测试时如何才能有单独的选项列表?

2 个答案:

答案 0 :(得分:10)

如果出现同样的问题,@ Mike Slinn的回答并不适合我。 我相信测试选项扩展了编译选项? 最终的诀窍是从test

中明确删除了被忽略的选项

scalacOptions in Test --= Seq( "-Ywarn-dead-code", "-Ywarn-value-discard")

答案 1 :(得分:1)

为什么不在变量(我称之为Andi, Bertha, Claus 12, 34, 99 )和其他变量(我称之为sopts)中定义其他选项?

soptsNoTest

使用SBT 0.13.13测试。

由于这个问题已经解决了很长时间,并且Scala 2.12和2.12.1在此期间发布,我修改了常用选项以适应。

顺便说一下,使用你提到的开关,ScalaTest没有遇到任何问题。我只回答了这个问题,因为它很有趣。