Sbt 配置中的键:如何列出配置和键?

Sbt 配置中的键:如何列出配置和键?,sbt,Sbt,本书介绍了配置键的概念 然后列出默认配置: 编撰 试验 运行时 集成测试 Q1)是否可以打印出sbt会话中所有配置的列表?如果没有,我能否在sbt文档中找到有关配置的信息 Q2)对于特定配置,例如“编译”,是否可以从sbt会话打印出配置密钥列表?如果没有,我可以在sbt文档中找到有关配置密钥的信息吗?所有配置的列表 为此,您可以使用如下设置: val allConfs = settingKey[List[String]]("Returns all configurations for the

本书介绍了配置键的概念

然后列出默认配置:

  • 编撰
  • 试验
  • 运行时
  • 集成测试
Q1)是否可以打印出sbt会话中所有配置的列表?如果没有,我能否在sbt文档中找到有关配置的信息

Q2)对于特定配置,例如“编译”,是否可以从sbt会话打印出配置密钥列表?如果没有,我可以在sbt文档中找到有关配置密钥的信息吗?

所有配置的列表 为此,您可以使用如下设置:

val allConfs = settingKey[List[String]]("Returns all configurations for the current project")

val root = (project in file("."))
  .settings(
     name := "scala-tests",
     allConfs := {
       configuration.all(ScopeFilter(inAnyProject, inAnyConfiguration)).value.toList
         .map(_.name)
     }
这将显示所有配置的名称。您可以访问
映射
中每个配置的更多详细信息

交互式sbt控制台的输出:

> allConfs
[info] * provided
[info] * test
[info] * compile
[info] * runtime
[info] * optional
如果您只想打印它们,您可以使用
settingKey[Unit]
并在设置定义中使用
println

配置中所有键的列表 为此,我们需要一个
任务
(可能还有其他方法,但我还没有探索,在sbt中,如果某些方法可行,我很满意…)和一个解析器来解析用户输入

在此代码段中加入上述所有设置:

import sbt._
import sbt.Keys._
import complete.DefaultParsers._

val allConfs = settingKey[List[String]]("Returns all configurations for the current project")
val allKeys = inputKey[List[String]]("Prints all keys of a given configuration")

val root = (project in file("."))
  .settings(
     name := "scala-tests",
     allConfs := {
       configuration.all(ScopeFilter(inAnyProject, inAnyConfiguration)).value.toList
         .map(_.name)
     },
     allKeys := {
       val configHints = s"One of: ${
         configuration.all(ScopeFilter(inAnyProject, inAnyConfiguration)).value.toList.mkString(" ")
       }"
       val configs = spaceDelimited(configHints).parsed.map(_.toLowerCase).toSet
       val extracted: Extracted = Project.extract(state.value)
       val l = extracted.session.original.toList
         .filter(set => set.key.scope.config.toOption.map(_.name.toLowerCase)
           .exists(configs.contains))
         .map(_.key.key.label)
       l
     }
   )
现在您可以像这样使用它:

$sbt“所有密钥编译”

如果您处于交互模式,可以在
所有键之后按tab键查看提示:

> allKeys
One of: provided test compile runtime optional
由于
allKeys
是一个
任务
如果您只是“返回”,它的输出将不会显示在sbt控制台上,但您可以打印它