SBT中测试和发布的不同编译选项

  • 本文关键字:编译选项 测试 SBT sbt
  • 更新时间 :
  • 英文 :


我有一个项目,在创建二进制文件时需要禁用断言。现在我可以输入:

scalacOptions += "-Xdisable-assertions"

但是单元测试也会在没有断言的情况下运行。是否有一个(希望)简单的方法来实现我所需要的?

如何创建二进制文件?你使用什么任务/命令?

使用任务作为scalacOptions的作用域,使它们具有不同的值。参见按配置轴定义作用域:

默认情况下,所有与编译、打包和运行的范围限定在一个配置中,因此可能有效在每个配置中是不同的。最明显的例子是任务键编译、打包和运行;但是所有的键都有影响这些键(如sourceDirectories或scalacOptions或

有疑问时使用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 CompileCompile范围的。

相关内容

  • 没有找到相关文章

最新更新