2015-03-13 16 views
23

Tại sao tôi sẽ chạy 'xây dựng sạch sẽ gradle' thay vì 'xây dựng gradle'? Từ những gì tôi hiểu, gradle có thể phát hiện các thay đổi nguồn và cập nhật các tạo phẩm cuối cùng nếu cần. Vậy tại sao tôi vẫn cần phải 'làm sạch'?Tại sao chạy 'gradle clean'?

+1

Để đảm bảo các lỗi bạn nhận được không phải do lập chỉ mục sai theo gradle. Hoặc nếu bạn thêm thư viện mới thay đổi mọi phụ thuộc. – Tschallacka

+0

"gradel clean build" giúp loại bỏ tất cả các phụ thuộc được tạo trong khi xây dựng lần cuối và nhận các phụ thuộc mới từ máy chủ và xây dựng dự án của bạn. Cảm ơn – Naitik

+2

@Naitik, điều đó không đúng. – Opal

Trả lời

33

clean task được xác định bởi java plugin và nó chỉ đơn giản là loại bỏ thư mục buildDir, do đó làm sạch mọi thứ kể cả phần còn lại từ các bản dựng trước không còn liên quan. Không làm như vậy có thể dẫn đến việc xây dựng ô uế có thể bị hỏng do tạo các tạo phẩm được tạo bởi các bản dựng trước đó.

Ví dụ giả định rằng bản dựng của bạn chứa một số thử nghiệm không thành công và bạn đã quyết định rằng các thử nghiệm này đã lỗi thời do đó cần phải được loại bỏ. Nếu không làm sạch kết quả kiểm tra (bằng cách sử dụng nhiệm vụ cleanTest) hoặc xây dựng hoàn toàn (bằng cách chạy nhiệm vụ sạch), bạn sẽ gặp khó khăn với kết quả kiểm tra không thành công, điều này sẽ làm cho bản dựng của bạn thất bại. Các tác dụng phụ tương tự cũng có thể xảy ra với các tài nguyên/lớp được loại bỏ khỏi các nguồn nhưng vẫn nằm trong thư mục build không được làm sạch.

+0

cảm ơn bạn đã trả lời. Tôi biết những gì sạch sẽ, nhưng tôi không biết một trường hợp cụ thể khi nó hữu ích. Bạn có thể cung cấp ví dụ như vậy để hiểu rõ hơn không? Cảm ơn. –

+0

Chắc chắn. Giả sử rằng bản dựng của bạn có chứa một số thử nghiệm không thành công và bạn đã quyết định rằng các quá trình này đã lỗi thời do đó cần được loại bỏ. Nếu không làm sạch kết quả kiểm tra (bằng cách sử dụng nhiệm vụ cleanTest) hoặc xây dựng hoàn toàn (bằng cách chạy nhiệm vụ sạch), bạn sẽ gặp khó khăn với kết quả kiểm tra không thành công, điều này sẽ làm cho bản dựng của bạn thất bại. Các tác dụng phụ tương tự cũng có thể xảy ra với các tài nguyên/lớp được loại bỏ khỏi các nguồn nhưng vẫn nằm trong thư mục build không được làm sạch. –

+0

Làm cho tinh thần. Bạn có thể chỉnh sửa câu trả lời của bạn để bao gồm ví dụ này để tôi có thể đánh dấu nó là chính xác không? –

1

Các công cụ xây dựng khác như buck sẽ phát hiện thấy một số thử nghiệm đã bị xóa và sẽ không chạy chúng mà không cần chạy mục tiêu sạch. Tôi nghĩ rằng đây là pitfall của gradle.

+0

Điều này phần lớn là không chính xác, Gradle có đầu vào và đầu ra theo dõi và hầu như tất cả các nhiệm vụ có thể xử lý trường hợp này. – mkobit

Các vấn đề liên quan