Existe uma maneira de forçar uma tarefa do Gradle a ser executada novamente ou redefinir todas as tarefas para o estado não ATUALIZADO?
106
Tente executar sua construção com -C rebuild
o cache do Gradle que reconstrói.
Em versões mais recentes do Gradle, use --rerun-tasks
Se você deseja que apenas uma única tarefa seja sempre executada, você pode definir a outputs
propriedade dentro da tarefa.
outputs.upToDateWhen { false }
Esteja ciente de que, se sua tarefa não tiver nenhuma entrada de arquivo definida, o Gradle pode pular a tarefa, mesmo ao usar o código acima. Por exemplo, em uma tarefa Zip ou Copiar, deve haver pelo menos um arquivo fornecido na fase de configuração da definição da tarefa.
tasks.whenTaskAdded { theTask -> if (theTask.name.startsWith("dex")) { theTask.outputs.upToDateWhen { false } theTask.doLast { task ->... }}}
Você pode usar
cleanTaskname
Digamos que você tem
E você quer forçar, digamos, sometask2 a ser executado novamente, você pode
antes de executar a tarefa que executa tudo.
Aparentemente, no gradle, todas as tarefas que entendem ATUALIZAÇÃO também entendem como se limpar.
fonte
Tive um caso difícil em que definir
outputs.upToDateWhen { false }
dentro da tarefa ou adicionar o sinalizador--rerun-tasks
não ajudava, pois a tarefasetOnlyIf
continuava sendo definida parafalse
cada vez que eu a executava.Adicionar o seguinte para
build.gradle
forçar a execução demyTask
:fonte