我喜欢scalacOptions在顶级定义(例如,暂时忽略项目轴):
scalacOptions += "-Ywarn-unused-import"
Run Code Online (Sandbox Code Playgroud)
但后来我意识到这太严格了console.所以我试着设置:
scalacOptions in console ~= (_ filterNot (_ == "-Ywarn-unused-import"))
Run Code Online (Sandbox Code Playgroud)
但这不起作用(在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
Run Code Online (Sandbox Code Playgroud)
注意:console是
compile:consolecompile: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
Run Code Online (Sandbox Code Playgroud)
注意:compile:console::scalacOptions是
compile:scalacOptions*:console::scalacOptions在委托链中没有达到(这是我定义的)我的问题是如何覆盖scalacOptions控制台的所有配置?是否可以更改授权链?
我想避免设置scalacOptions in (Compile, console)(因为它会重复(Test, console))或定义一个scalac选项的val.
Eug*_*ota 16
我的问题是如何覆盖
scalacOptions控制台的所有配置?
我认为我们不能给出compile:scalacOptionssbt提供的存在Defaults.唯一具有更高优先级的范围是compile:console::scalacOptions.在大多数情况下,人们不希望Compile和Test设置交叉连接,因此配置范围更高优先级我不认为是一个错误的默认值.
lazy val commonSettings = Seq(
scalaVersion := "2.11.4",
scalacOptions += "-Ywarn-unused-import",
scalacOptions in (Compile, console) ~= (_ filterNot (_ == "-Ywarn-unused-import")),
scalacOptions in (Test, console) := (scalacOptions in (Compile, console)).value
)
Run Code Online (Sandbox Code Playgroud)
是否可以更改授权链?
不,这是不可能的.BuildStructure中有一个delegates函数实例,它在加载时初始化并用于所有任务.订购在Scope.delegates中完成.
| 归档时间: |
|
| 查看次数: |
3920 次 |
| 最近记录: |