2012-03-13 32 views
14

Tôi muốn nối thêm một số chức năng xóa bổ sung vào nhiệm vụ sạch (đối với bản dựng Java).Gradle - Xóa không hoạt động

Vì vậy, tôi thử thêm phần sau vào kịch bản lệnh xây dựng gradle của mình.

clean.doLast{ 
    delete ('test.txt') 
} 

Khi tôi tinh chỉnh tác vụ "sạch", tệp mẫu của tôi không bị xóa ... Tôi cũng không nhận được bất kỳ thông báo lỗi nào cho biết điều gì đã xảy ra.

Nếu tôi thử như sau:

task deleteStuff(type: Delete) { 
    delete 'test.txt' 
} 

Mọi thứ làm việc.

Tôi có thể thêm chức năng xóa (qua doLast) vào các tác vụ không? Cách thích hợp để thực hiện điều này là gì (không có hack trong các tác vụ Ant).

Trả lời

15

Trong hai đoạn mã này, bạn không gọi số Project.delete() nhưng Delete.delete(). Nói cách khác, bạn đang cấu hình nhiệm vụ Delete. Làm điều này sau khi tác vụ Delete đã được thực thi (như trong đoạn đầu tiên) đã quá muộn.

Trong trường hợp tác vụ Delete, không có lý do chính đáng để thêm hoạt động delete với doLast. Đoạn mã thứ hai của bạn rõ ràng là thích hợp hơn. Đối với các tác vụ khác, cách tiếp cận doLast sẽ hoạt động vì chúng không có phương thức delete. Hoặc bạn có thể phân biệt với project.delete().

+0

Peter, cảm ơn vì đã đề cập đến project.delete để phân biệt. Điều đó làm sáng tỏ rất nhiều sự nhầm lẫn của tôi. –

1

Nếu lý do là để tránh dành thời gian trong giai đoạn chuẩn bị (được thực hiện cho mọi công việc), doFirst có thể được sử dụng để thiết lập Xóa nhiệm vụ. Vì vậy, việc sử dụng clean.doFirst thay vì clean.doLast trong ví dụ trên sẽ hoạt động.

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