【问题标题】:Combine sbt tasks from different scopes将SBT任务从不同的范围组合起来
【发布时间】:2014-08-28 20:55:13
【问题描述】:

我将 sbt 与本机打包程序插件一起使用,以便为我们的 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 用于消除警告,这是另一种气味。

有没有更好的方法来做到这一点?

【问题讨论】:

    标签: sbt sbt-native-packager


    【解决方案1】:

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

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

    附言。我认为你这样做的方式也很好。如果您担心警告,可以将结果分配给一些 val

    【讨论】:

    • 我认为这看起来更好,因为它更能描述我实际想要实现的目标。谢谢!
    • 这里的一个问题是在 Debian 中发布的失败不会被传播。
    【解决方案2】:

    这里,dependsOn 任务是合适的,如果你不关心返回值:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-26
      • 1970-01-01
      • 2012-08-04
      • 2015-09-04
      相关资源
      最近更新 更多