2015-03-13 13 views
23

Dlaczego miałbym uruchomić "gradle clean build" zamiast "gradle build"? Z tego co rozumiem, gradle może wykryć zmiany w źródle i zaktualizować końcowe artefakty, jeśli to konieczne. Dlaczego więc nadal musiałbym "czyścić"?Dlaczego warto uruchomić "czysty grad"?

+1

Aby upewnić się, że otrzymywane błędy nie pochodzą z niewłaściwego indeksowania według gradle. Lub jeśli dodałeś nowe biblioteki, które zmieniają każdą zależność. – Tschallacka

+0

"Gradel czysta kompilacja" pomaga usunąć wszystkie zależności, które zostały wygenerowane podczas ostatniej kompilacji i uzyskać nowe zależności od serwera i zbudować projekt. Dzięki – Naitik

+2

@Naitik, to nieprawda. – Opal

Odpowiedz

33

The clean task jest określona przez java plugin i po prostu usuwa folder buildDir, więc wszystko w tym sprzątanie resztek z poprzednich kompilacji, które nie są już istotne. Nieprzestrzeganie tego może spowodować nieczystą kompilację, która może zostać zerwana z powodu artefaktów kompilacji wytworzonych przez poprzednie kompilacje.

Jako przykład załóżmy, że twoja kompilacja zawiera kilka testów, które się nie powiodły i zdecydowałeś, że są one przestarzałe, a zatem muszą zostać usunięte. Bez czyszczenia wyników testu (przy użyciu zadania cleanTest) lub zbudowania w całości (po uruchomieniu czystego zadania) utkniesz z wynikami testów, które nie powiodły się, co spowoduje, że twoja kompilacja się nie powiedzie. Podobne efekty uboczne mogą się zdarzyć również w przypadku zasobów/klas usuniętych ze źródeł, ale pozostały w folderze kompilacji, który nie został oczyszczony.

+0

dzięki za odpowiedź. Jestem świadomy tego, co robi czysty, ale nie znam konkretnego przypadku, kiedy jest użyteczny. Czy możesz podać taki przykład, dla lepszego zrozumienia? Dzięki. –

+0

Pewnie. Załóżmy, że twoja kompilacja zawiera kilka testów, które się nie powiodły, a ty zdecydowałeś, że są one przestarzałe, więc muszą zostać usunięte. Bez czyszczenia wyników testu (przy użyciu zadania cleanTest) lub zbudowania w całości (po uruchomieniu czystego zadania) utkniesz z wynikami testów, które nie powiodły się, co spowoduje, że twoja kompilacja się nie powiedzie. Podobne efekty uboczne mogą się zdarzyć również w przypadku zasobów/klas usuniętych ze źródeł, ale pozostały w folderze kompilacji, który nie został oczyszczony. –

+0

Ma sens. Czy możesz edytować swoją odpowiedź, aby dołączyć ten przykład, aby oznaczyć go jako prawidłowy? –

1

Inne narzędzia do budowania, takie jak buck, wykryją, że niektóre testy zostały usunięte i nie uruchomią ich bez potrzeby uruchomienia czystego celu. Myślę, że to pułapka gradle.

+0

To jest najczęściej niedokładne, Gradle ma śledzenie wejścia i wyjścia i prawie wszystkie zadania mogą obsłużyć tę sprawę. – mkobit

Powiązane problemy