在Gradle中连续运行任务的正确方法是什么

时间:2015-09-10 23:16:40

标签: gradle task

我在gradle中有这样的任务:task startServer (dependsOn: [':backend:appengineStop', ':backend:appengineRun'])。问题是appengineStop没有运行,或者似乎没有在appengineRun运行之前运行。
 我这样说是因为当服务器运行并执行此任务时,它应该首先停止服务器(appengineStop)并再次启动服务器(appengineRun),但这不会发生并且构建失败说"Port already in use" 这就是我首先列出appengineStop所以它会停止服务器的原因。有人可以解释一下。

1 个答案:

答案 0 :(得分:0)

设置deppendsOn你的任务只是说,你所依赖的两个任务(在你的情况下是':backend:appengineStop'':backend:appengineRun')将在你的从属startServer任务之前执行。未确定此任务的执行顺序。可能它们将按字母顺序执行,但它是一种gradle实现的行为,你不会依赖它。

Gardle任务有能力使用mustRunAfter方法确定其顺序,这使得任务在执行指定为参数的任务之后运行。

您可以尝试通过向构建脚本添加类似以下内容来执行此操作:

task startServer (dependsOn: [':backend:appengineStop', ':backend:appengineRun']) {
    tasks.getByPath(':backend:appengineRun').mustRunAfter ':backend:appengineStop'
}