通常我使用这组选项来编译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
}
但前两个禁用正常编译范围的选项,而后者不影响测试编译选项。
编译测试时如何才能有单独的选项列表?
答案 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没有遇到任何问题。我只回答了这个问题,因为它很有趣。