Gradle: как выполнить задачу doFirst до выполнения зависит от? - PullRequest
0 голосов
/ 12 декабря 2018

В Gradle, если Task B dependsOn Task A, как я могу добавить код к Task B, который всегда выполняется первым, как первая часть во всей цепочке?

Выводит следующий фрагмент

> Task :A
A doFirst
A doLast

> Task :B
B doFirst
B doLast

Однако желаемый вывод:

> Task :B
I AM going to set some variables/checks, pre A and pre B

> Task :A
A doFirst
A doLast

> Task :B
B doFirst
B doLast

Действительно единственный метод, представляющий задачу C, котораявыполняется до A (B зависит от C, A.mustRunAfter C), так что он первый в цепочке?

Gradle:

task A {
    doFirst {
        println("A doFirst")
    }
    doLast {
        println("A doLast")
    }
}

task B {
    dependsOn A
    /* doInitialize {
        println("I AM going to set some variables/checks, pre A and pre B")
    }*/
    doFirst {
        println("B doFirst")
    }
    doLast {
        println("B doLast")
    }
}

1 Ответ

0 голосов
/ 13 декабря 2018

Вы можете попробовать запустить логику инициализации на этапе настройки сборки.Вам просто нужно указать свою задачу следующим образом:

task B {
    dependsOn A

    println("I AM going to set some variables/checks, pre A and pre B")

    doFirst {
        println("B doFirst")
    }
    doLast {
        println("B doLast")
    }
}

В этом случае println("I AM going to set some variables/checks, pre A and pre B") выполняется на этапе настройки, прежде чем начнется выполнение реальной задачи.

Вы можете прочитать большео жизненном цикле сборки в официальной документации Gradle 1008 *

...