如何给一系列任务起别名?

Posted

技术标签:

【中文标题】如何给一系列任务起别名?【英文标题】:How to alias a sequence of tasks? 【发布时间】:2013-04-19 01:10:27 【问题描述】:

我的 SBT (0.12.2) 项目中有自定义任务。我们称它们为abc。因此,当我处于 SBT 的交互模式时,我只需键入 a 并执行与 a 关联的任务。我也可以输入;a;b;c,三个任务依次执行;就像;clean;compile 一样。我还可以从交互式 shell 中创建一个别名来运行它们:alias all=;a;b;c。现在,当我输入all 时,任务将以一种明显的方式执行。我想要实现的是在我的项目的 SBT 配置中创建这个别名。

This section 的 SBT 文档处理任务,但我能做到的只是这样的:

lazy val a = TaskKey[Unit]("a", "does a")
lazy val b = TaskKey[Unit]("b", "does b")
lazy val c = TaskKey[Unit]("c", "does c")
lazy val all = TaskKey[Unit]("all", ";a;b;c")

lazy val taskSettings = Seq(
    all <<= Seq(a,b,c).dependOn
)

我对这种方法的问题是任务是组合,因此它们的执行是并行发生的,而不是顺序执行,这是我想要实现的。那么如何在 SBT 配置文件中创建像 alias all=;a;b;c 这样的别名呢?

【问题讨论】:

【参考方案1】:

我一直在寻找同样的东西,发现this request 是一种简单的别名方法,而the commit 提供了一种方法:addCommandAlias

在我的build.sbt 我现在有:

addCommandAlias("go", ";container:start;~copy-resources")

正如您可能猜到的那样,在控制台中写入 go 现在将为我运行更长的命令序列。

【讨论】:

是的,他们将在 0.13 中添加一堆很酷的东西。到发布时,您甚至可能不再需要完整构建配置。 呃,我什至没有注意到版本标签。它在 0.12.1 中对我有用。 :)【参考方案2】:

实现此目的的另一种方法是在 .sbtrc 文件中定义一个别名,该别名将位于项目目录的根目录中。

alias all=;a;b;c

您还可以选择在您的主目录中定义这些 .sbtrc 文件,在这种情况下,您的所有项目都可以使用此别名。

【讨论】:

【参考方案3】:

我想通了:

lazy val taskSettings = Seq(
    all <<= c dependsOn (b dependsOn a)
)

【讨论】:

我想知道为什么要做所有“dependsOn” - 考虑到序列已经定义“;a;b;c”或者为什么定义“;a;b;c”如果c dependsOn (b dependsOn a)是设置

以上是关于如何给一系列任务起别名?的主要内容,如果未能解决你的问题,请参考以下文章

typescript中的类型别名和字面量类型

Spring Boot入门系列如何实现异步执行任务

如何手动加密SOAP消息?

Flink 实战系列如何给 Flink 任务设置合理的并行度?

Spark 实战系列sparkstreaming 任务出现堆积如何优化?(流量突然大增资源不够怎么办?)

Spark 实战系列sparkstreaming 任务出现堆积如何优化?(流量突然大增资源不够怎么办?)