Scala 如何处理与TaskKey相关的大量(20+;)设置键?

Scala 如何处理与TaskKey相关的大量(20+;)设置键?,scala,sbt,Scala,Sbt,我目前正在为您完成SBT插件 Flyway有6个基本命令,这些命令将映射到6个TaskKey 这些可由Flyway对象上的大量设置器(20+)进行配置。然后,这些设置中的每一个都会映射到一个设置键(每个设置器一个) 但是,在解析TaskKey时,我可以通过的参数数量达到了限制。是否有更好/更具可伸缩性(如支持更多设置键)的解决方案?或者更笼统地说: 处理大量与任务键相关的设置键的最佳方法是什么?解决方法是将多个相关键捆绑到辅助对象中。例如,我正在创建一个助手键“\u aux\u java”,以处

我目前正在为您完成SBT插件

Flyway有6个基本命令,这些命令将映射到6个TaskKey

这些可由Flyway对象上的大量设置器(20+)进行配置。然后,这些设置中的每一个都会映射到一个设置键(每个设置器一个)

但是,在解析TaskKey时,我可以通过的参数数量达到了限制。是否有更好/更具可伸缩性(如支持更多设置键)的解决方案?或者更笼统地说:


处理大量与任务键相关的设置键的最佳方法是什么?

解决方法是将多个相关键捆绑到辅助对象中。例如,我正在创建一个助手键
“\u aux\u java”
,以处理该问题:

private val java      = TaskKey[JavaSettings]("_aux_java")
...

val settings = Seq[Setting[_]](
  ...
  java      <<= (systemProperties, javaOptions, fullClasspath, packageBin in Compile,
                 mainClass, javaVersion, javaArchs, workingDirectory) map JavaSettings,
  appbundle <<= (infos, java, bundle, streams) map appbundleTask
)
...

case class JavaSettings(systemProperties: Seq[(String, String)],
                        javaOptions: Seq[String], classpath: Classpath, jarFile: File,
                        mainClassOption: Option[String], javaVersion: String,
                        javaArchs: Seq[String], workingDirectory: Option[File])
private val java=TaskKey[JavaSettings](“\u aux\u java”)
...
val设置=顺序[设置[]](
...

java解决方法是将多个相关键捆绑到辅助对象中。例如,我正在创建一个辅助键
“\u aux\u java”
,以处理该问题:

private val java      = TaskKey[JavaSettings]("_aux_java")
...

val settings = Seq[Setting[_]](
  ...
  java      <<= (systemProperties, javaOptions, fullClasspath, packageBin in Compile,
                 mainClass, javaVersion, javaArchs, workingDirectory) map JavaSettings,
  appbundle <<= (infos, java, bundle, streams) map appbundleTask
)
...

case class JavaSettings(systemProperties: Seq[(String, String)],
                        javaOptions: Seq[String], classpath: Classpath, jarFile: File,
                        mainClassOption: Option[String], javaVersion: String,
                        javaArchs: Seq[String], workingDirectory: Option[File])
private val java=TaskKey[JavaSettings](“\u aux\u java”)
...
val设置=顺序[设置[]](
...

java我将“状态”参数传递给task,并直接从中提取所有设置键

例如:

IMHO在0.13中会有替代方法,但您最好根据sbt邮件列表进行搜索


PS我计划根据需要支持0.12 a长,因此这是我唯一的解决方案。

我将“状态”参数传递给task,并从中直接提取所有设置键

例如:

IMHO在0.13中会有替代方法,但您最好根据sbt邮件列表进行搜索

PS我计划根据需要支持0.12 a长,因此这是我唯一的解决方案