可以执行“编译测试:编译它:编译”作为单个命令,说“*:compile”?

时间:2013-12-02 21:22:30

标签: sbt

我经常运行compile test:compile it:compile并且...想要将击键次数减少到*:compile之类。但它似乎不起作用。

$ sbt *:compile
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Loading project definition from /Users/jacek/oss/scalania/project
[info] Set current project to scalania (in build file:/Users/jacek/oss/scalania/)
[error] No such setting/task
[error] *:compile
[error]          ^

有可能吗?我使用SBT 0.13。

1 个答案:

答案 0 :(得分:18)

test:compile表示compile,因此compile不需要在test:compile之前显式运行IntegrationTest。如果您的extend配置Test it:compiletest:compile隐含sbt> alias compileAll = ; test:compile ; it:compile

一个选项是定义执行多个命令的别名:

help alias

有关详细信息,请参阅help ;addCommandAlias("compileAll", "; test:compile ; it:compile") 。您可以使用以下命令将其作为构建的一部分:

lazy val compileAll = taskKey[Unit]("Compiles sources in all configurations.")

compileAll := { 
   val a = (compile in Test).value
   val b = (compile in IntegrationTest).value
   ()
}

另一个选项是定义一个依赖于其他任务的自定义任务并调用:

{{1}}