21

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

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
)

我用这种方法遇到的问题是任务被组合在一起,因此它们的执行与顺序相反,这是我想要实现的。那么如何alias all=;a;b;c在 SBT 配置文件中创建一个别名呢?

4

3 回答 3

35

我一直在寻找同样的东西,发现这个请求是一种简单的别名方法和提供一个别名的提交addCommandAlias.

在我的build.sbt我现在有:

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

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

于 2013-05-08T08:07:23.173 回答
11

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

alias all=;a;b;c

您可以在主目录中定义这些 .sbtrc 文件的附加选项,在这种情况下,此别名将可用于您的所有项目。

于 2016-04-28T02:52:16.513 回答
9

我想通了:

lazy val taskSettings = Seq(
    all <<= c dependsOn (b dependsOn a)
)
于 2013-04-25T10:22:49.437 回答