【发布时间】:2013-04-19 08:30:19
【问题描述】:
当任务将被跳过时,是否有可能不执行该任务的依赖项?
在下面的示例中,如果在执行runServerTests 时服务器已经在运行,我希望jar(以及jar 的依赖项)不被执行。在这种情况下,服务器将由另一个进程启动。
apply plugin: 'java'
task startServerIfNotRunning(dependsOn: jar) {
onlyIf { isServerNotRunning() }
...
}
task runServerTests(dependsOn: startServerIfNotRunning) { ... }
我不想在jar 任务中添加onlyIf,因为其他总是应该执行的任务可能取决于那个任务。 jar 任务也有自己的依赖关系。
【问题讨论】:
-
我不知道这里的答案,但是如果您的服务器依赖于 jar,并且 jar 已过期,您为什么不想重新启动服务器呢?如果 jar 是最新的并且它的所有依赖项都是最新的,那么它不会花费你那么多时间,因为 jar 任务没有执行任何操作......
-
虽然你说得有道理,但我们确实有很多子项目,所以即使一切都是最新的,完成一次完整的“重新编译”也需要大约 15-30 秒。如果可能的话,我想摆脱这段时间。大多数情况下,服务器都是最新的。
标签: dependencies gradle