3

我是 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中的新任务/设置语法有关:

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

任何帮助都感激不尽!

4

1 回答 1

6

它不是 sbt 0.13,它是 sbt-assembly。我在0.8.8接受了一个jarName从设置更改为任务的拉取请求:

打破:jarName 现在是一个任务

对于那些想要动态生成 jar 名称的人来说是个好消息。感谢@dchenbecker,汇编中的 jarName 现在是第 74 项任务。

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

jarName in assembly := {
  name.value + "-" + version.value + ".jar"
}
于 2013-12-03T15:02:14.093 回答