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