SBT程序集问题:找到String需要sbt.Task [String],其中<<< = syntax

时间:2013-12-03 13:33:59

标签: sbt sbt-assembly

我是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有关:

  

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

感激不尽的任何帮助!

1 个答案:

答案 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"
}