sbt以编程方式解析任务范围

时间:2017-06-23 11:30:26

标签: scope sbt task

如何以编程方式引用范围键?即什么是程序化的等价物,例如scalafmt ::测试?

上下文:neo-sbt-scalafmt定义了一个用于格式化源的TaskKey scalafmt,但它还定义了一个名为test(https://github.com/lucidsoftware/neo-sbt-scalafmt/blob/master/sbt-scalafmt/src/main/scala/com/lucidchart/sbt/scalafmt/ScalafmtCorePlugin.scala#L143)的作用域,该作用域仅检查源是否符合预期的格式。

根据SettingKey,在编译之前调用TaskKey scalaFmt。我想介绍一个新的SettingKey来调用scalafmt :: test。下面编译,但始终运行scalafmt,而不是scalafmt :: test。

if (scalafmtOnCompile.value) scalafmt in resolvedScoped.value.scope
else if (scalafmtTestOnCompile.value) (test in scalafmt) in resolvedScoped.value.scope

https://github.com/lucidsoftware/neo-sbt-scalafmt/blob/master/sbt-scalafmt/src/main/scala/com/lucidchart/sbt/scalafmt/ScalafmtCorePlugin.scala#L170

我在sbt gitter频道上问过这个问题,并在这里为下一个人记录。

1 个答案:

答案 0 :(得分:1)

test in (resolvedScoped.value.scope in scalafmt.key)

这基本上意味着:"采用现有范围,但在scalafmt任务范围内进行,这是我想要使用的测试范围"

感谢Dale Wijnand最初在gitter上提供答案。