sourcesets - gradle version android studio
¿Por qué ejecutar ''gradle limpio''? (2)
La tarea limpia está definida por el complemento java y simplemente elimina la carpeta buildDir, limpiando así todo lo que incluye restos de compilaciones anteriores que ya no son relevantes. No hacerlo puede resultar en una compilación sucia que puede romperse debido a artefactos de compilación producidos por compilaciones anteriores.
Como ejemplo, suponga que su compilación contiene varias pruebas que fallaron y usted decidió que estas están obsoletas, por lo que debe eliminarse. Sin limpiar los resultados de la prueba (usando la tarea cleanTest) o la compilación en su totalidad (ejecutando la tarea limpia), se quedará atascado con los resultados de las pruebas fallidas, lo que hará que su compilación falle. También pueden ocurrir efectos secundarios similares con recursos / clases eliminados de las fuentes pero que permanecen en la carpeta de compilación que no se limpió.
¿Por qué ejecutaría ''gradle clean build'' en lugar de ''gradle build''? Por lo que entiendo, gradle puede detectar cambios en la fuente y actualizar los artefactos finales si es necesario. Entonces, ¿por qué todavía necesito ''limpiar''?
Otras herramientas de compilación como buck detectarán que se eliminan algunas pruebas y no las ejecutarán sin la necesidad de ejecutar un objetivo limpio. Creo que esto es un escollo de Gradle.