SBT程序集问题:找到所需字符串SBT.Task[String],语法为

SBT程序集问题:找到所需字符串SBT.Task[String],语法为,sbt,sbt-assembly,Sbt,Sbt Assembly,我是sbt assembly的长期和愉快的用户,但在一个新项目上使用sbt 0.13.0和sbt assembly 0.10.1时遇到了一个问题 我以前使用过这样的代码: import sbtassembly.Plugin._ import AssemblyKeys._ lazy val sbtAssemblySettings = assemblySettings ++ Seq( // Slightly cleaner jar name jarName in assembly <&

我是sbt assembly的长期和愉快的用户,但在一个新项目上使用sbt 0.13.0和sbt assembly 0.10.1时遇到了一个问题

我以前使用过这样的代码:

import sbtassembly.Plugin._
import AssemblyKeys._
lazy val sbtAssemblySettings = assemblySettings ++ Seq(
  // Slightly cleaner jar name
  jarName in assembly <<= (name, version) { (name, version) => name + "-" + version + ".jar" }
)

lazy val buildSettings = ... ++ sbtAssemblySettings
在以前版本的SBT/SBT assembly中,这对我来说很好,但现在我得到了错误:

type mismatch;
[error]  found   : String
[error]  required: sbt.Task[String]
[error]     jarName in assembly <<= (name, version) { (name, version) => name + "-" +   version + ".jar" }
[error]                                                                                           ^
[error] one error found
完整性:完整的项目是可用的

我不禁想知道,这个问题是否与SBT 0.13.0中的:

首先,仍然支持旧语法,目的是允许您在空闲时转换为新语法。可能存在一些不兼容,有些是不可避免的,但请报告现有版本中存在的任何问题


感谢您的帮助

这不是sbt 0.13,而是sbt组件。我接受了一个pull req,该请求将jarName从设置更改为任务:

打破:jarName现在是一项任务 对于那些希望动态生成jar名称的人来说,这是个好消息。多亏了@dchenbecker,汇编中的jarName现在成了一项任务

使用sbt 0.13语法,您不必再担心任务/设置的差异:

jarName in assembly := {
  name.value + "-" + version.value + ".jar"
}

非常感谢您的迅速回复,尤金!标记为接受答案。