Existe-t-il un moyen de forcer une tâche gradle à s'exécuter à nouveau ou de réinitialiser toutes les tâches à l'état pas à jour?
106
Essayez d'exécuter votre build avec -C rebuild
qui reconstruit le cache de Gradle.
Dans les versions plus récentes de Gradle, utilisez --rerun-tasks
Si vous souhaitez qu'une seule tâche soit toujours exécutée, vous pouvez définir la outputs
propriété à l'intérieur de la tâche.
outputs.upToDateWhen { false }
Veuillez noter que si votre tâche n'a pas d'entrées de fichier définies, Gradle peut ignorer la tâche, même en utilisant le code ci-dessus. Par exemple, dans une tâche Zip ou Copy, au moins un fichier doit être fourni dans la phase de configuration de la définition de tâche.
tasks.whenTaskAdded { theTask -> if (theTask.name.startsWith("dex")) { theTask.outputs.upToDateWhen { false } theTask.doLast { task ->... }}}
Vous pouvez utiliser
cleanTaskname
Disons que vous avez
Et vous voulez forcer, disons, quelque chose à exécuter à nouveau, vous pouvez
avant d'exécuter la tâche qui exécute tout.
Apparemment, en gradle, chaque tâche qui comprend UP-TO-DATE comprend également comment se nettoyer.
la source
J'ai eu un cas difficile où la configuration
outputs.upToDateWhen { false }
à l'intérieur de la tâche ou l'ajout du drapeau--rerun-tasks
n'aidait pas car la tâche étaitsetOnlyIf
toujours définie àfalse
chaque fois que je l'exécutais.Ajout de ce qui suit pour
build.gradle
forcer l'exécution demyTask
:la source