【发布时间】:2015-01-12 10:48:18
【问题描述】:
我喜欢像这样在顶层定义scalacOptions(例如,暂时忽略项目轴):
scalacOptions += "-Ywarn-unused-import"
但后来我意识到这对console 来说太严格了。所以我尝试设置:
scalacOptions in console ~= (_ filterNot (_ == "-Ywarn-unused-import"))
但这不起作用(在 REPL 中仍然收到(致命的)警告)。
我使用inspect 尝试了解原因:
> inspect console
[info] Task: Unit
[info] Description:
[info] Starts the Scala interpreter with the project classes on the classpath.
[info] Provided by:
[info] {file:/a/}b/compile:console
[info] Defined at:
[info] (sbt.Defaults) Defaults.scala:261
[info] Dependencies:
[info] compile:console::compilers
[info] compile:console::initialCommands
[info] compile:console::fullClasspath
[info] compile:console::taskTemporaryDirectory
[info] compile:console::scalaInstance
[info] compile:console::streams
[info] compile:console::cleanupCommands
[info] compile:console::scalacOptions
[info] Delegates:
[info] compile:console
[info] *:console
[info] {.}/compile:console
[info] {.}/*:console
[info] */compile:console
[info] */*:console
[info] Related:
[info] test:console
注意:console 是
- 由
compile:console提供 - 取决于
compile:console::scalacOptions
然后:
> inspect compile:console::scalacOptions
[info] Task: scala.collection.Seq[java.lang.String]
[info] Description:
[info] Options for the Scala compiler.
[info] Provided by:
[info] {file:/a/}b/compile:scalacOptions
[info] Defined at:
[info] (sbt.Classpaths) Defaults.scala:1593
[info] Reverse dependencies:
[info] compile:console
[info] Delegates:
[info] compile:console::scalacOptions
[info] compile:scalacOptions
[info] *:console::scalacOptions
[info] *:scalacOptions
[info] {.}/compile:console::scalacOptions
[info] {.}/compile:scalacOptions
[info] {.}/*:console::scalacOptions
[info] {.}/*:scalacOptions
[info] */compile:console::scalacOptions
[info] */compile:scalacOptions
[info] */*:console::scalacOptions
[info] */*:scalacOptions
[info] Related:
[info] *:console::scalacOptions
[info] compile:scalacOptions
[info] *:scalacOptions
[info] */*:scalacOptions
[info] test:scalacOptions
注意:compile:console::scalacOptions 是
- 由
compile:scalacOptions提供 - 在委托链中没有到达
*:console::scalacOptions(这是我定义的)
我的问题是如何为控制台的所有配置覆盖scalacOptions?是否可以更改委托链?
我想避免必须设置 scalacOptions in (Compile, console)(因为它会为 (Test, console) 重复)或定义一个 val scalac 选项。
【问题讨论】: