9

当任务将被跳过时,是否有可能不执行任务的依赖关系?

在下面的示例中jarjar如果执行runServerTests. 在这种情况下,服务器将由另一个进程启动。

apply plugin: 'java'

task startServerIfNotRunning(dependsOn: jar) {
  onlyIf { isServerNotRunning() }
  ...
}

task runServerTests(dependsOn: startServerIfNotRunning) { ... }

我不想onlyIfjar任务中添加一个,因为总是应该执行的其他任务可能取决于那个任务。该jar任务也有自己的依赖关系。

4

2 回答 2

6

要获得所需的行为,您必须从任务执行图中排除任务,而不是跳过它的执行。您可以使用-x命令行或以编程方式使用gradle.startParameter.excludedTaskNames << "..."or来执行此操作gradle.taskGraph.useFilter { task -> ... }

于 2013-04-26T11:48:05.970 回答
4

你可以做类似的事情

task startServerIfNotRunning(dependsOn: jar) {
    if (isServerNotRunning()) {
        enabled = false;
        dependsOn = [];
    }
}

我们在配置阶段评估的 if 语句和相关任务被删除。我在Skipping Gradle Tasks with code and output 中总结了这一点。看一看。

于 2014-12-28T15:41:18.020 回答