Я хочу создать простую задачу синхронизации, которая немного изменит ее поведение в зависимости от типа сборки (например, отладка / выпуск), и я использую логическую переменную 'dummy', отклоненную в gradle.taskGraph.whenReady:
gradle.taskGraph.whenReady {taskGraph ->
dummy = false
if (taskGraph.hasTask(':dummybuild')) {
dummy = true
}
}
Проблема в том, что задача, настроенная следующим образом, имеет область конфигурации, т. Е. До beforeReady, поэтому она не имеет доступа к переменной 'dummy':
task copySkins(type: Sync) {
from skinsFrom
into skinsInto
rename skinsRename
exclude symbianExclude
if (!dummy) exclude dummyExclude
}
Сейчас я использую этот обходной путь
task copySkins {
inputs.dir skinsFrom
outputs.dir skinsInto
doLast {
task skins(type: Sync) {
from skinsFrom
into skinsInto
rename skinsRename
exclude symbianExclude
if (!dummy) exclude dummyExclude
}
skins.execute()
}
}
Возможно ли
- обнаружение / настройка некоторых свойств сборки в другом месте, кроме случаев, когда готов
- перенести работу по синхронизации в doLast
- или, по крайней мере, есть ярлык для задачи синхронизации (.execute () выглядит довольно некрасиво)