如何根据任务的价值设置价值列表

How to make a Setting of list of values depend on the value of a task

我想设置名为 sbt-izpack 的第 3 方插件的 SettingKey[Seq[Tuple2[String, String]]] 名为 IzPack.variables

文档说明了如何设置此设置:

IzPack.variables in IzPack.Config <+= name {name => ("projectName", name)}

我认为 <+= 语法很旧。 0.13.5 SBT 文档中没有关于它的解释。

如何附加取决于任务的值?

这是我现在使用的语法:

IzPack.variables in IzPack.Config ++= Seq(
    ("appVersion", mySetting1.value),
    ("cocoonXconf", mySetting2.value),
)

但在尝试将任务值与此消息一起使用时它会抱怨:

A setting cannot depend on a task

如果它是 Setting,则必须在项目加载时知道它,因为 Setting 只计算一次。 Tasks 另一方面每次都计算。 Setting 不能依赖于 TaskTask 可以依赖于 Setting

参见 http://www.scala-sbt.org/0.13/tutorial/More-About-Settings.html#Tasks+with+dependencies

我最终完成的解决方案是重构我自己的代码,以便生成文件的任务分为定义输出文件的设置和创建文件内容的任务。

该设置用于初始化设置 IzPack.variables,而我的自定义任务依赖于使用 IzPack.variables 的任务。