Ленивая плоская копия файлового дерева Gradle

У меня есть задача, которая должна скопировать файлы, созданные на этапе выполнения (они являются продуктами этапа модульного тестирования gcov) в другой каталог. На данный момент мой код будет выполняться правильно только во второй раз (т.е. когда файлы в структуре каталогов были созданы). Однако в первый раз я получаю отладочное сообщение «пропустить задачу, нет исходных файлов».

task copyGcovObj(type: Copy, dependsOn: 'test') {
    description "Copies gcov files into build/testOutput directory."
    from fileTree(dir: "$buildDir/objectFiles", includes: ["**/*.gcno", "**/*.gcda"]).files
    into ("$buildDir/testOutput")
}

Код взят отсюда: плоская копия. Упомянутая задача «тест» — это задача, которая выполняет модульные тесты.

Я думаю, проблема в том, что на этапе настройки нет файлов для копирования, поэтому Gradle пропускает задачу. Если он выполняется во второй раз, Gradle видит, что файлы есть, поэтому выполняет копию. Как сделать так, чтобы Gradle выполнял копию, но файлы для копирования определялись на этапе выполнения?


person John    schedule 10.06.2014    source источник


Ответы (1)


from и into принимают замыкания для отсрочки оценки аргументов, так что это должно помочь:

from { fileTree(...).files }
person Peter Niederwieser    schedule 11.06.2014
comment
Спасибо, это именно то, чего я добивался. - person John; 11.06.2014