如何访问像 assemblyJarName 这样的 sbt 变量的值?

How to access the value of sbt variables like assemblyJarName?

在版本 1.1.5 中。
例如,如何在 build.sbt?
中打印它 println(assemblyJarName.value) 不行,结果报错:
[error] Did you mean assemblyPackageDependency / assemblyJarName ?

如果 assemblyJarNamebuild.sbt 中这样定义

assemblyJarName in assembly := "hello.jar"

然后在调用 value 时尝试提供明确的任务范围 assembly,如下所示

println((assemblyJarName in assembly).value)

这是必需的,因为 assemblyJarName 设置是 scoped to a task 如果我们执行 inspect assemblyJarName

就可以看到
inspect assemblyJarName
[info] No entry for key.
[info] Description:
[info]  name of the fat jar
[info] Delegates:
[info]  assemblyJarName
[info]  ThisBuild / assemblyJarName
[info]  Global / assemblyJarName
[info] Related:
[info]  assembly / assemblyJarName
[info]  assemblyPackageDependency / assemblyJarName
[info]  assemblyPackageScala / assemblyJarName

当我们只提供基本设置时,它的 default 范围就像这样

inspect projFoo    /     Zero         /    Zero    /   assemblyJarName
           |              |                 |
        project      configuraition        task
   

但是assemblyJarName不存在于这样的范围内

inspect assemblyJarName
[info] No entry for key.

但是在 Related 部分我们看到

[info] Related:
[info]  assembly / assemblyJarName
[info]  assemblyPackageDependency / assemblyJarName
[info]  assemblyPackageScala / assemblyJarName

这告诉我们 assemblyJarName 设置的范围是以下三个任务

assembly
assemblyPackageDependency
assemblyPackageScala