Мне нравится определять 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)) или определять значения параметров scalac.