Tarefa criada dinamicamente do tipo Cópia é sempre UP-TO-DATE

Eu preparei um script muito simples, que ilustra o problema que vejo usando o Gradle 1.7 (é necessário ficar com ele por causa de alguns plugins que ainda não suportam versões mais recentes).

Eu estou tentando criar dinamicamente tarefas cada uma delas corresponde a um arquivo no diretório do projeto. Isso funciona bem, mas as tarefas que eu crio nunca são executadas assim que eu as atribuo digite 'Copiar'.

Aqui está o meu problemabuild.gradle:

file('templates').listFiles().each { File f ->

    // THIS LINE DOES NOT WORK
    task "myDist-${f.name}" (type: Copy) {

    // NEXT LINE WORKS
    //task "myDist-${f.name}" {
        doLast {
            println "MYDIST-" + f.name
        }
    }
}

task distAll(dependsOn: tasks.matching { Task task -> task.name.startsWith("myDist")}) {
    println "MYDISTALL"
}

defaultTasks 'distAll'

Desta forma, minhas tarefas não são executadas quando eu chamo a tarefa padrão chamando simplesmentegradle:

MYDISTALL
:myDist-template1 UP-TO-DATE
:myDist-template2 UP-TO-DATE
:distAll UP-TO-DATE

BUILD SUCCESSFUL

Se eu remover o tipoCopy da minha tarefa dinâmica (descomentando a linha acima), minhas tarefas são executadas:

MYDISTALL
:myDist-template1
MYDIST-template1
:myDist-template2
MYDIST-template2
:distAll

BUILD SUCCESSFUL

(Você precisará criar um nome de pastatemplates no mesmo diretório ondebuild.gradle está localizado e coloca alguns arquivos vazios nele para executar o teste)

De acordo com a saída de depuração:

Ignorando tarefa ': myDist-template1', pois não possui arquivos de origem.

Ignorando tarefa ': myDist-template2', pois não possui arquivos de origem.

Então, como posso especificar arquivos de origem e fazer o meuCopy tarefas executadas? Eu tentei adicionar

from( '/absolute/path/to/existing/file' ) {
    into 'myfolder'
}

para o corpo da tarefa, eu tentei atribuir tarefasinputs.source file('/my/existing/file') sem sucesso. Poderia, por favor, aconselhar sobre como modificar meu script simples, deixando a criação de tarefas dinâmicas e mantendo minhas tarefas dinâmicas do tipoCopy?

Obrigado!

Edit: Tudo bem, desta forma a tarefa é chamada:

file('templates').listFiles().each { File f ->
    task "myDist-${f.name}" (type: Copy) {
        from f
        into 'dist'
        doLast {
            println "MYDIST-" + f.name
        }
    }
}

mas parece que devo sempre especificarfrom/into. Não é suficiente fazer isso no corpo do {} do DoLast.

questionAnswers(4)

yourAnswerToTheQuestion