【问题标题】:sbt-assembly does not pick up configuration specific settingssbt-assembly 不选择配置特定的设置
【发布时间】:2016-05-05 00:21:23
【问题描述】:

我正在从工具 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
  )

现在我希望如果我运行sbt assembly-foosbt foo:assembly,它会生成一个文件wtf.jar。但我得到了默认的root-assembly-0.1-snapshot.jar。当我尝试指定 assemblyExcludedJars 时也会出现同样的问题,它们会被忽略并仍然包含在内。


如果我删除 inConfig 它会起作用:

lazy val root = Project(id = "root", base = file("."))
  .settings(
    inTask(assembly) {
      assemblyJarName := "wtf.jar"
    },
    scalaVersion := "2.11.7",
    assemblyFoo <<= assembly in Foo
  )

但现在我不能为不同的配置使用不同的 jar 名称(这是重点)。


in a blog post by one of sbt's authors and the author of sbt-assembly 所述,这应该有效。它也写在this Stackoverflow question。但是该示例需要一个古老版本的 sbt-assembly(2013 年的 0.9.0,在自动插件等之前),并且似乎不适用于当前版本。

【问题讨论】:

    标签: scala sbt sbt-assembly


    【解决方案1】:

    如果定义了新配置,则必须重新定义(?)所有即将使用的任务。显然对于 sbt-assembly,这意味着运行 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 测试。

    【讨论】:

      猜你喜欢
      • 2019-07-15
      • 2015-10-11
      • 2014-04-24
      • 2016-10-04
      • 2019-10-18
      • 2014-12-24
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多