如何让s3-upload依赖(在Universal中的packageZipTarball)?

时间:2014-02-22 05:45:57

标签: sbt sbt-native-packager

我想使用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中嵌套这个不正确吗?

1 个答案:

答案 0 :(得分:2)

第1部分

您使用的是sbt 0.12还是0.13?

在sbt 0.12及更早版本中,密钥在sbt的交互模式下为capitalized-like-this,但在构建定义中为capitalizedLikeThis

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

无论如何,无论您使用的是0.12还是0.13,都需要将package-zip-tarball更改为packageZipTarball。 Scala解析器认为前者意味着package - zip - tarballpackage是一个关键字,也就是您所遇到的错误来源。

如果你在0.13,你可以完全忘记整个连字号作为一个现在无关的历史怪癖。

第2部分

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

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