¿Hay alguna manera de forzar la ejecución de una tarea de Gradle de nuevo o restablecer todas las tareas al estado no ACTUALIZADO ?
106
Intente ejecutar su compilación con -C rebuild
eso reconstruye la caché de Gradle.
En versiones más recientes de Gradle, use --rerun-tasks
Si desea que se ejecute siempre una única tarea, puede establecer la outputs
propiedad dentro de la tarea.
outputs.upToDateWhen { false }
Tenga en cuenta que si su tarea no tiene ninguna entrada de archivo definida, Gradle puede omitir la tarea, incluso cuando utilice el código anterior. Por ejemplo, en una tarea Zip o Copy, es necesario que se proporcione al menos un archivo en la fase de configuración de la definición de la tarea.
tasks.whenTaskAdded { theTask -> if (theTask.name.startsWith("dex")) { theTask.outputs.upToDateWhen { false } theTask.doLast { task ->... }}}
Puedes usar
cleanTaskname
Digamos que tienes
Y quieres forzar, digamos, alguna tarea2 a ejecutarse de nuevo, puedes
antes de ejecutar la tarea que lo ejecuta todo.
Aparentemente, en Gradle, cada tarea que comprende ACTUALIZACIÓN también comprende cómo limpiarse a sí misma.
fuente
Tuve un caso difícil en el que configurar
outputs.upToDateWhen { false }
dentro de la tarea o agregar la bandera--rerun-tasks
no ayudó, ya que la tarea sesetOnlyIf
seguía configurandofalse
cada vez que la ejecutaba.Añadiendo lo siguiente para
build.gradle
forzar la ejecución demyTask
:fuente