在跳过该任务时,不以某种方式可以执行任务的依赖关系吗?
在下面的示例中,如果服务器在执行{{1}时已经在运行,我希望执行jar
(以及jar
的依赖关系) not }}。在这种情况下,服务器将由另一个进程启动。
runServerTests
我不想在apply plugin: 'java'
task startServerIfNotRunning(dependsOn: jar) {
onlyIf { isServerNotRunning() }
...
}
task runServerTests(dependsOn: startServerIfNotRunning) { ... }
任务中添加onlyIf
,因为总是应该执行的其他任务可能取决于那个。 jar
任务也有自己的依赖。
答案 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中用代码和输出对此进行了总结。看一看。