与我输入的命令对应的sbt键

时间:2013-12-23 14:43:02

标签: sbt

我希望每次输入universal:package-zip-tarball时都会运行测试。我知道要做到这一点,我必须提出像

这样的东西
someKey <<= someKey dependsOn (test in Test)

在我的project/Build.scala中,其中someKey是提供我希望依赖于测试运行的任务的键,在本例中为universal:package-zip-tarball

但我的一般性问题是:如何找出someKey应该是什么?

请注意,这是一个Play框架项目,我甚至不知道Play是否提供了universal:package-zip-tarball,还是其他一些sbt插件。

有没有什么方法可以告诉我,我不必去搜索包含相关代码的源代码库?

1 个答案:

答案 0 :(得分:2)

使用inspect命令:

$ inspect universal:package-zip-tarball

[...]

[info] Defined at:
[info]  (com.typesafe.sbt.packager.universal.UniversalPlugin)
UniversalPlugin.scala:73

这实际上是任务代码定义的位置,但这足够接近,因为它让我们找到密钥(密钥将在同一个sbt插件中)。

从中我们可以发现关键是:

com.typesafe.sbt.packager.universal.Keys.packageZipTarball

不幸的是,只是替换它不起作用 - 它说:

[error] Reference to undefined setting: 
[error] 
[error]   my-project/*:packageZipTarball from my-project/*:packageZipTarball
[error]      Did you mean my-project/universal-docs:packageZipTarball ?
[error]  
[error] Use 'last' for the full log.

所以要解决这个问题,唯一剩下的就是翻译universal:前缀。实际上是这样的:

packageZipTarball in Universal <<= packageZipTarball in Universal dependsOn (test in Test)

但它需要额外的导入才能使其编译:

import com.typesafe.sbt.SbtNativePackager._

(在这种情况下,我认为SbtNativePackager是主要的插件对象。其他插件可能需要导入其他内容,以翻译这样的前缀。)