如果发生异常,gradle避免依赖任务不运行

时间:2016-12-09 07:41:49

标签: gradle groovy build.gradle

我有两个任务..任务A和任务B.我希望任务B在每次执行任务A时运行。为了做到这一点,我使用finalizedBy,但是如果任务A抛出异常仍然是任务B执行是否有办法避免这种情况。

任务A {   ... }

任务B {   ... }

A.finalizedBy B

输出:

通常会执行任务A和B.

如果A中有异常,B也会被执行。如果任务A抛出异常,我不希望执行任务B.

1 个答案:

答案 0 :(得分:0)

根据official documentation

  

即使最终任务失败,也会执行终结器任务。

但是,如果A-task失败,您可以使用doFirst闭包来停止B任务执行。这是一个例子:

task A {
    doLast{
        println 'A'
        throw new IllegalStateException()
    }
}

task B {
    doFirst {
        if (A.state.failure != null) {
            throw new StopExecutionException()
        }
    }
    doLast{
        println 'B'
    }
}

A.finalizedBy B

这是在B任务执行之前(在doFirst内)检查的A任务状态,如果A-task失败,则抛出StopExecutionExceptionm,用于跳过任务执行。