Pourquoi devrais-je courir gradle clean build
au lieu de gradle build
?
D'après ce que j'ai compris, Gradle peut détecter les modifications de source et mettre à jour les artefacts finaux si nécessaire. Alors pourquoi aurais-je encore besoin de clean
?
La tâche de nettoyage est définie par le plug-in Java et supprime simplement le dossier buildDir, nettoyant ainsi tout ce qui reste, y compris les restes des versions précédentes qui ne sont plus pertinentes. Si vous ne le faites pas, vous risquez de générer une version malpropre qui pourrait être endommagée par les artefacts de génération produits par les versions précédentes.
A titre d'exemple, supposons que votre version contienne plusieurs tests qui ont échoué et que vous ayez décidé qu'ils étaient obsolètes et que vous deviez les supprimer. Sans nettoyer les résultats du test (à l'aide de la tâche cleanTest) ou la génération entièrement (en exécutant la tâche de nettoyage), vous serez bloqué par les résultats des tests ayant échoué, ce qui entraînera l'échec de votre génération. Des effets secondaires similaires peuvent également se produire lorsque des ressources/classes sont supprimées des sources mais restent dans le dossier de génération non nettoyé.
D'autres outils de construction, tels que buck, détecteront que certains tests sont supprimés et ne les exécuteront pas sans qu'il soit nécessaire d'exécuter une cible propre. Je pense que c'est le piège de la qualité.