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

Dav*_*son 6 dependencies gradle

在跳过该任务时,是否有可能执行任务的依赖关系?

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

apply plugin: 'java'

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

task runServerTests(dependsOn: startServerIfNotRunning) { ... }
Run Code Online (Sandbox Code Playgroud)

我宁愿不是添加onlyIfjar任务,因为这总是应该可以根据一个执行其他任务.该jar任务也有自己的依赖.

Pet*_*ser 6

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


Ani*_*kur 5

你可以做类似的事情

task startServerIfNotRunning(dependsOn: jar) {
    if (isServerNotRunning()) {
        enabled = false;
        dependsOn = [];
    }
}
Run Code Online (Sandbox Code Playgroud)

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