Force Gradle запускать задачу, даже если она UP-TO-DATE

Я столкнулся с ситуацией, когда все идет вверх по Drading для Gradle, хотя мне все же хотелось бы, чтобы эта задача выполнялась для меня. Очевидно, это не так:

gradle test
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE

BUILD SUCCESSFUL

Total time: 0.833 secs

Я могу заставить его запустить тест, выполнив чистый тест, хотя в некоторых случаях это может считаться накладными расходами. Есть ли способ заставить выполнение задачи независимо от того, считает ли Gradle UP-TO-DATE или нет?

Ответы

Ответ 1

Если вы хотите повторно запустить все задачи, вы можете использовать параметр командной строки --rerun-tasks. Однако это в основном то же самое, что делать чистым, поскольку оно перезапускает все задачи.

Если вы хотите запускать отдельную задачу каждый раз, вы можете указать, что она никогда не обновляется:

mytask {
    outputs.upToDateWhen { false }
}

Если вы хотите повторно запустить одну задачу один раз и оставить все остальные задачи, вам нужно реализовать немного логики:

mytask {

    outputs.upToDateWhen { 
        if (project.hasProperty('rerun')) {
            println "rerun!"
            return false
        } else {
            return true
        }
    }
}

И затем вы можете заставить задачу перезапустить, используя:

gradle mytask -Prerun

Обратите внимание, что это также перезапустит все задачи, зависящие от mytask.