我如何获得s3上传依赖(在通用软件包ZipTarball)



我想使用s3-sbt上传包zip tarball任务的结果(来自sbt原生打包程序)。

目前,我的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"一起包含在元组2中。然后,周围的Seq生成一个只有一个元素的序列。

我不明白为什么找不到价值包ZipTarball。

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

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

第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原生packager自述文件确实使用了import和以com.typesafe.sbt.packager开头的显式限定名称,因此至少有一点迹象表明,这样的东西可能是必要的,但也许文档应该更明确地调用它。

相关内容

最新更新