我有一个项目,我需要在创建二进制文件时禁用断言。现在我可以这样做:SBT中测试和发布的不同编译选项?
scalacOptions += "-Xdisable-assertions"
但是,然后单元测试将运行没有断言。有没有(希望)简单的方法来实现我所需要的?
我有一个项目,我需要在创建二进制文件时禁用断言。现在我可以这样做:SBT中测试和发布的不同编译选项?
scalacOptions += "-Xdisable-assertions"
但是,然后单元测试将运行没有断言。有没有(希望)简单的方法来实现我所需要的?
如何创建二进制文件?你使用什么任务/命令?
使用任务的范围为scalacOptions
有不同的价值观对他们。见Scoping by configuration axis:
默认情况下,所有的编译,打包,并 运行有关的键的作用域的配置,因此可以在每个配置下工作 不同。最明显的例子是 任务键编译,打包和运行;但所有这些影响 那些键(如sourceDirectories或scalacOptions或 fullClasspath)的密钥也作用域到配置。
当有疑问时使用inspect
。
> inspect scalacOptions
[info] Task: scala.collection.Seq[java.lang.String]
[info] Description:
[info] Options for the Scala compiler.
[info] Provided by:
[info] {file:/C:/dev/sandbox/task-dependsOn/}task-dependson/compile:scalacOptions
[info] Defined at:
[info] (sbt.Classpaths) Defaults.scala:1424
[info] Dependencies:
[info] task-dependson/compile:autoCompilerPlugins
[info] task-dependson/compile:settingsData
[info] task-dependson/compile:update
[info] task-dependson/compile:buildDependencies
[info] task-dependson/compile:thisProjectRef
[info] Delegates:
[info] task-dependson/compile:scalacOptions
[info] task-dependson/*:scalacOptions
[info] {.}/compile:scalacOptions
[info] {.}/*:scalacOptions
[info] */compile:scalacOptions
[info] */*:scalacOptions
[info] Related:
[info] b/compile:scalacOptions
[info] b/test:scalacOptions
[info] task-dependson/test:scalacOptions
[info] task-dependson/jacoco:scalacOptions
[info] a/jacoco:scalacOptions
[info] */*:scalacOptions
[info] a/test:scalacOptions
[info] a/compile:scalacOptions
[info] b/jacoco:scalacOptions
的Compile
配置范围是默认的(见show defaultConfiguration
为一个项目),所以scalacOptions += "-Xdisable-assertions"
其实scalacOptions in Compile += "-Xdisable-assertions"
。使用不同的配置,比如Test
,你会得到不同的结果。
SBT中有一个问题(我错过了第一次回应) - 设置是链接的,当设置未在范围中定义时,它从更一般的范围获得它的值。当我说,scalacOptions +=...
实际上是scalacOptions in Compile
我错过了设置的重要功能 - scalacOptions
是全球性的,而scalacOptions in Compile
是Compile
-放大。
'scalacOptions在编译+ = “-Xdisable-断言”' –
@giladhoch这到处禁用断言。 – ziggystar
也许你还可以添加:'测试〜=(_.filterNot(_ ==“-Xdisable-assertions”))'scalacOptions',没有测试过,但我认为这应该工作... –