Sbt 如何让s3上传依赖于(Universal中的packageZipTarball)?

Sbt 如何让s3上传依赖于(Universal中的packageZipTarball)?,sbt,sbt-native-packager,Sbt,Sbt Native Packager,我想使用s3sbt上传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 += Cre

我想使用s3sbt上传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生成一个正好包含一个元素的序列

我不明白为什么找不到值包ziptarball

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


s3 sbt是否太旧,无法支持新的sbt 0.13语法。在Seq中嵌套此项是否不正确?

第1部分

您使用的是sbt 0.12还是0.13

在sbt 0.12和早期版本中,键在sbt的交互模式中是
大写的,但在构建定义中是
大写的

在sbt 0.13中,这一点在两种情况下都被接受。(
这样大写的
在交互模式下仍然可以接受,但只是为了向后兼容。)

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

如果你在0.13,你可以完全忘记连字符这件事,因为这是一个与历史无关的怪癖

第二部分

我发现要编译Universal中的packageZipTarball,必须在build.sbt的顶部添加导入com.typesafe.sbt.packager.Keys.\uu


sbt native packager自述文件确实使用了
import
和以
com.typesafe.sbt.packager
开头的显式限定名称,因此至少有一点迹象表明可能需要这样做,但也许医生应该更明确地说出来。

@SethTisue谢谢你的回答。我仔细检查了一遍,一定是在复制错误消息时意外按下了]。build.sbt的该部分中没有方括号:-(啊-我没有意识到我需要在build.sbt中使用不同的语法。我也没有意识到0.13已经改变了这么多。我已经升级到了sbt 0.13.1和用例,但是我仍然会出错。我会用更多的内容更新这个问题,因为我认为一旦找到答案,就会帮助其他人。哦,耶!现在它可以工作了。非常感谢你的光临。)请回答这个问题。