如何使用SBT为项目构建打印“测试配置”中的所有设置?

时间:2018-06-22 02:40:56

标签: scala sbt scala.js

我有一个scala-js项目,添加了特定的库依赖关系,这影响了项目测试用例的运行方式。没有库依赖,一切正常,在我添加它们的那一刻,测试无法执行。我想检查所有的sbt设置,如果它们受到影响。有什么办法可以打印所有设置并检查?

1 个答案:

答案 0 :(得分:2)

BuildStructure.data似乎可以按范围访问所有设置。我们可以通过定义custom command printAllTestSettings来访问它,如下所示:

def printAllTestSettings = Command.command("printAllTestSettings") { state =>
  val structure = Project.extract(state).structure

  val testScope =
    Scope(
      Select(ProjectRef(new File("/home/mario/sandbox/hello-world-scala/"), "root")),
      Select(ConfigKey("test")),
      Zero,
      Zero
    )

  structure
    .data
    .keys(testScope)
    .foreach(key => println(s"${key.label} = ${structure.data.get(testScope, key).get}"))

 state
}

commands ++= Seq(printAllTestSettings)

以下是输出摘要:

...
managedSourceDirectories = List(/home/mario/sandbox/hello-world-scala/target/scala-2.12/src_managed/test)
managedResourceDirectories = List(/home/mario/sandbox/hello-world-scala/target/scala-2.12/resource_managed/test)
testLoader = Task((taskDefinitionKey: ScopedKey(Scope(Select(ProjectRef(file:/home/mario/sandbox/hello-world-scala/,root)), Select(ConfigKey(test)), Zero, Zero),testLoader)))
packageBin = Task((taskDefinitionKey: ScopedKey(Scope(Select(ProjectRef(file:/home/mario/sandbox/hello-world-scala/,root)), Select(ConfigKey(test)), Zero, Zero),packageBin)))
...