在Gradle中定义没有依赖的任务顺序?

Dav*_*son 6 gradle

我可以以某种方式确保在另一个任务之前/之后执行任务,同时执行这两个任务吗?我希望添加的依赖这总是有他们之间.

背景

我有两个任务,一个启动服务器,另一个运行测试.启动该服务器的任务在新进程中运行它,因此我可以运行gradle startServer runServerTests.由于启动服务器需要一些时间,因此必须可以使用一个gradle进程启动服务器,然后使用另一个gradle进程多次运行测试.

现在,我正在尝试创建一个完成CI环境所做的所有事务的任务,包括启动服务器和运行服务器测试.我显然想在运行测试之前确保服务器已启动,但到目前为止我运气不好.

尝试

我的第一次尝试是在下面,但由于无法保证定义的依赖项的顺序,因此不起作用:

task doItAll(dependsOn: [startServer, runServerTests]) { ... }
Run Code Online (Sandbox Code Playgroud)

我的第二次尝试,在操作中调用任务不起作用,不受支持:

task doItAll() << {
  tasks.startServer.execute()
  tasks.runServerTests.execute()
}
Run Code Online (Sandbox Code Playgroud)

解决方案在路线图上(GRADLE-294,Initializer/Finalizer),但现在对我没有帮助.

erd*_*rdi 6

目前它可能对你没什么帮助,但是我最近在这个领域提交了一个拉取请求,暗示它应该变成1.6(它们目前正在发布1.5并且PR没有进入那个版本) - 请参阅此处的讨论.你最好的选择是在1.5版本之后等待pull请求合并到master中,然后从这里获取第一个可用的nightly build .

编辑

Gradle 1.6已经发布了一段时间,现在你可以简单地使用它mustRunAfter来实现这一点.有关详细信息,请参阅Gradle手册中有关任务排序的部分.