Ответ 1
Просто подумайте о разных сценариях...
-
Задачи без ввода или вывода. Они работают все время. Это может быть просто завершение существующего исполняемого файла "сделать что-то".
-
Задачи со входами и. Они запускаются при изменении входов или выходов. Это может быть компилятор.
-
Задачи с просто выходами. Они запускаются только тогда, когда выходы изменены/не существуют. Это может быть что-то, что что-то загружает. (Я думаю, что они в действительности довольно редки, я бы подсчитал URL-адрес для загрузки в качестве ввода.)
-
Задачи с входами и без выходов. Я не сталкивался с этим на практике.
Как вы уже сказали, вы можете обмануть обновленные проверки с выходным файлом, который просто пуст. Встроенная Gradle Test задача наиболее похожа на то, что вы описываете, и она имеет "отчет" в качестве вывода. Думаю, у вас, вероятно, тоже будет что-то похожее. Это может быть так же просто, как захват stdout/stderr задачи и помещение его в файл. Это не слишком полезно для того, когда все проходит, но было бы полезно, когда все провалится.
Конечно, любой из них может быть дополнен пользовательским кодом upToDateWhen
. например, у вас есть задача, которая запускает веб-сервер и "обновляется", когда веб-сервер уже запущен. Я не думаю, что это хорошо вписывается в то, что вы здесь описываете.
Для начала я попробую:
outputs.files file("${buildDir}/reports/${name}.out")
Я думаю, что это будет работать с или без что-то помещать в файл.