Scala sbt程序集不拾取特定于配置的设置

Scala sbt程序集不拾取特定于配置的设置,scala,sbt,sbt-assembly,Scala,Sbt,Sbt Assembly,我正在从工具sbt中更新一个旧的0.7.x构建文件,谢天谢地,它同时从其名称中删除了对“simple”的引用 曾经有用的东西,现在不再有用了。对于平台特定的组装任务,我有不同的config条目。其中包括由于某种原因现在被称为assemblyExcludedJars而不是excludedJars的特定过滤器,以及由于某种原因现在被称为assemblyJarName而不是jarName的特定jar名称 基本上: val Foo = config("foo") extend Compile lazy

我正在从工具sbt中更新一个旧的0.7.x构建文件,谢天谢地,它同时从其名称中删除了对“simple”的引用

曾经有用的东西,现在不再有用了。对于平台特定的组装任务,我有不同的
config
条目。其中包括由于某种原因现在被称为
assemblyExcludedJars
而不是
excludedJars
的特定过滤器,以及由于某种原因现在被称为
assemblyJarName
而不是
jarName
的特定jar名称

基本上:

val Foo = config("foo") extend Compile

lazy val assemblyFoo = TaskKey[File]("assembly-foo")

lazy val root = Project(id = "root", base = file("."))
  // .configs(Foo)  // needed? doesn't change anything
  .settings(
    inConfig(Foo)(inTask(assembly) {
      assemblyJarName := "wtf.jar"
    }),
    scalaVersion := "2.11.7",
    assemblyFoo <<= assembly in Foo
  )
但是现在我不能对不同的配置使用不同的jar名称(这就是重点)



如上所述,这应该是可行的。它也是用英文写的。但该示例需要sbt assembly的一个古老版本(自2013年起为0.9.0,在自动插件等之前),并且似乎不适用于当前版本。

如果定义一个新配置,则必须重新定义(?)将要使用的所有任务。显然,对于sbt程序集,这意味着运行
baseAssemblySettings

val Foo = config("foo") extend Compile

lazy val assemblyFoo = TaskKey[File]("assembly-foo")

lazy val root = Project(id = "root", base = file("."))
  .settings(
    inConfig(Foo)(baseAssemblySettings /* !!! */ ++ inTask(assembly) {
      jarName := "wtf.jar"
    }),
    scalaVersion := "2.11.7",
    assemblyFoo  := (assembly in Foo).value
  )

使用sbt 0.13.9和sbt assembly 0.14.1进行测试。

如果定义了新配置,则必须重新定义(?)将要使用的所有任务。显然,对于sbt程序集,这意味着运行
baseAssemblySettings

val Foo = config("foo") extend Compile

lazy val assemblyFoo = TaskKey[File]("assembly-foo")

lazy val root = Project(id = "root", base = file("."))
  .settings(
    inConfig(Foo)(baseAssemblySettings /* !!! */ ++ inTask(assembly) {
      jarName := "wtf.jar"
    }),
    scalaVersion := "2.11.7",
    assemblyFoo  := (assembly in Foo).value
  )
使用sbt 0.13.9和sbt组件0.14.1进行测试