结合来自不同范围的sbt任务

时间:2014-07-08 07:53:07

标签: sbt sbt-native-packager

我将sbt与native packager插件一起使用,以便为我们的Play 2.2应用程序构建Debian软件包。我们使用debian:publish将包上传到Artifactory服务器,使用publish命令发布常规Java jar。

我希望能够使用常规publish命令发布jar文件和Debian软件包。我想我需要以某种方式将Debian范围内的发布任务与Compile范围内的常规任务相结合,但我无法找到有关如何执行此操作的任何文档。

我提出了以下代码,它起作用,但在我看来是这样做的'错误'方法:

publish := { // Also publish deb files
  val value = publish.value
  (publish in Debian).value
}

特别是第二行似乎错了,因为它忽略了价值。 val是安静的警告,这是另一种气味。

有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

您可以使用triggeredBy。在build.sbt添加以下行:

publish in Debian <<= (publish in Debian).triggeredBy(publish in Compile)

PS。我觉得你做的方式也很好。如果您担心警告,可以将结果分配给某些val

答案 1 :(得分:2)

此处,dependsOn任务是合适的,如果您不关心返回值:

publish := publish.dependsOn(publish in Debian).value