1

我想使用 s3-sbt 上传 package-zip-tarball 任务的结果(来自 sbt-native-packager)。

目前,我的重要部分build.sbt如下所示:

mappings in upload := Seq(( ((package-zip-tarball in Universal).value) ,"trailhunger2-1.0.tgz"))

host in upload := "trailhunger.s3.amazonaws.com"

credentials += Credentials(Path.userHome / ".s3credentials")

重新加载时,sbt 报告以下内容:

/Users/sarge/Documents/workspaces/TrailHunger/TrailHunger2/build.sbt:56: error: illegal start of simple expression
mappings in upload := Seq(( ((package-zip-tarball in Universal).value) ,"trailhunger2-1.0.tgz"))
                              ^
/Users/sarge/Documents/workspaces/TrailHunger/TrailHunger2/build.sbt:56: error: ')' expected but eof found.
mappings in upload := Seq(( ((package-zip-tarball in Universal).value) ,"trailhunger2-1.0.tgz"))
                                                                                                ^
[error] Error parsing expression.  Ensure that there are no blank lines within a setting.

更新:在@SethTisue 的回答之后,我的代码现在显示为:

mappings in upload := Seq( ( (packageZipTarball in Universal).value ,"trailhunger2-1.0.tgz") )

可悲的是,我得到:

error: not found: value packageZipTarball
mappings in upload := Seq( ( (packageZipTarball in Universal).value ,"trailhunger2-1.0.tgz") )
                              ^
[error] Type error in expression

我的期望是在控制台中(packageZipTarball in Universal)做同样的事情。universal:packageZipTarball.value意味着我可以获得 java.io.File 类型的任务的值。然后将其与字符串文字“trailhunger2-1.0.tgz”一起包含在 tuple2 中。然后,周围的 Seq 会生成一个恰好包含一个元素的序列。

我不明白为什么找不到值 packageZipTarball。

我已经验证show universal:packageZipTarball返回我期望的文件名。

s3-sbt 是否太旧而无法支持新的 sbt 0.13 语法。在 Seq 中嵌套 this 不正确吗?

4

1 回答 1

2

第1部分

您使用的是 sbt 0.12 还是 0.13?

在 sbt 0.12 和更早的版本中,密钥capitalized-like-this处于 sbt 的交互模式,但capitalizedLikeThis在构建定义中。

capitalizedLikeThis在 sbt中,两种情况下都接受0.13 。(capitalized-like-this在交互模式下仍然被接受,但只是为了向后兼容。)

无论如何,无论你使用的是 0.12 还是 0.13,都需要更改package-zip-tarballpackageZipTarball. Scala 解析器认为前者意味着package - zip - tarball. Andpackage是一个关键字,这是您得到的错误的来源。

如果您使用的是 0.13,您可以完全忘记整个连字符的事情,因为现在已经无关紧要的历史怪癖了。

第2部分

我发现为了packageZipTarball in Universal编译,你必须添加import com.typesafe.sbt.packager.Keys._到 build.sbt 的顶部。

sbt-native-packager 自述文件确实有几个使用import和 以 开头的显式限定名称com.typesafe.sbt.packager,所以至少有一点迹象表明这样的事情可能是必要的,但也许文档应该更明确地指出它。

于 2014-02-22T18:49:59.333 回答