在Gradle中跳过禁用任务的依赖项执行?

时间:2013-04-25 12:31:55

标签: dependencies gradle

在跳过该任务时,以某种方式可以执行任务的依赖关系吗?

在下面的示例中,如果服务器在执行{{1}时已经在运行,我希望执行jar(以及jar的依赖关系) not }}。在这种情况下,服务器将由另一个进程启动。

runServerTests

我不想在apply plugin: 'java' task startServerIfNotRunning(dependsOn: jar) { onlyIf { isServerNotRunning() } ... } task runServerTests(dependsOn: startServerIfNotRunning) { ... } 任务中添加onlyIf,因为总是应该执行的其他任务可能取决于那个。 jar任务也有自己的依赖。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

您可以执行类似

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

我们在配置阶段评估if语句,并删除相关任务。我在Skipping Gradle Tasks中用代码和输出对此进行了总结。看一看。