我是sbt-assembly的长期和快乐的用户,但是在使用SBT 0.13.0& S时我遇到了问题。关于新项目的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
为了完整性:完整项目可用here。
我不禁想知道这个问题是否与SBT 0.13.0中的New task/setting syntax有关:
首先,仍支持旧语法,目的是允许在闲暇时转换为新语法。可能存在一些不兼容性,有些可能是不可避免的,但请报告您对现有版本的任何问题。
感激不尽的任何帮助!
答案 0 :(得分:6)
这不是sbt 0.13,而是sbt-assembly。我接受了一个pull req,它将jarName
从设置更改为0.8.8处的任务:
破坏:jarName现在是一个任务
对于那些想要动态生成jar名称的人来说是个好消息。感谢@dchenbecker,汇编中的jarName现在是一个任务#74。
使用sbt 0.13语法,您不必再担心任务/设置差异:
jarName in assembly := {
name.value + "-" + version.value + ".jar"
}