我希望每次输入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插件。
有没有什么方法可以告诉我,我不必去搜索包含相关代码的源代码库?
答案 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
是主要的插件对象。其他插件可能需要导入其他内容,以翻译这样的前缀。)