2013-02-28 24 views
14

Gần đây tôi đã bắt đầu sử dụng gradle trong một dự án và tôi chạy chuẩnUP-TO-DATE trong gradle cho biết điều gì?

gradle clean init build 

tôi nhận thấy rằng trong nhiều nhiệm vụ đang chạy, tôi nhận được tin nhắn UP-TO-NGÀY này trong giao diện điều khiển, bên cạnh cho nhiệm vụ hiện tại đang chạy. ví dụ: -

:foo:bar:test UP-TO-DATE 

Tôi tò mò về ý nghĩa của thông báo này. Không thể tìm thấy bất kỳ tài liệu nào giống nhau.

Trả lời

5

Gradle là hệ thống xây dựng gia tăng. Điều này có nghĩa là nó kiểm tra xem một nhiệm vụ có thực sự phải được thực thi trước khi thực thi nó hay không, để nhanh hơn. Vì vậy, ví dụ, nếu bạn đã biên soạn các tệp nguồn của bạn trong một bản dựng trước đó và không sửa đổi bất kỳ tệp nguồn nào (cũng như bất kỳ đầu vào nào khác của tác vụ biên dịch), thì Gradle sẽ không biên dịch lại tất cả các tệp nguồn , bởi vì nó biết nó sẽ dẫn đến chính xác cùng một đầu ra như đã có trong thư mục build. Và do đó, việc biên dịch được bỏ qua một cách an toàn, dẫn đến việc xây dựng nhanh hơn.

Thông tin khác trong the documentation

13

Mọi thứ Gradle làm là một công việc. Hầu hết các công việc đều có đầu vào và đầu ra được khai báo. Gradle sẽ xác định xem một nhiệm vụ có được cập nhật hay không bằng cách kiểm tra các đầu vào và đầu ra.

Ví dụ: nhập công việc compile của bạn là mã nguồn. Nếu mã nguồn đã không thay đổi kể từ lần biên dịch cuối cùng, thì nó sẽ kiểm tra đầu ra để chắc chắn rằng bạn đã không thổi đi các tệp lớp của bạn được trình biên dịch tạo ra. Nếu đầu vào và đầu ra không thay đổi, nó sẽ xem xét tác vụ "cập nhật" và không thực hiện tác vụ đó. Điều này có thể tiết kiệm rất nhiều thời gian, đặc biệt là trên các bản dựng lớn.

+0

Vì vậy, nếu một công việc nhiệm vụ là để kiểm tra các lớp học java (như nhiệm vụ kiểm tra, chúng tôi nhận được từ java plugin), giả định rằng bạn có một số kiểm tra không thành công, nếu bạn chạy cùng một tác vụ hai lần, liệu nó có chạy không nếu tất cả các nguồn thử nghiệm không thay đổi? –

+0

Ngoài ra, một khi tôi làm sạch sẽ, nó không buộc tất cả các nhiệm vụ phải khởi động lại? –

+0

@AnkitDhingra, Nhiệm vụ kiểm tra có thể hoạt động như bạn đã nói trong nhận xét đầu tiên của bạn, nhưng đó không phải là hành vi của tác vụ thử nghiệm mặc định. Đối với một "sạch", chạy sạch sẽ chỉ xóa thư mục xây dựng, do đó, sạch sẽ chỉ bắt buộc các tác vụ khởi động lại nếu chúng có đầu vào hoặc đầu ra trong thư mục xây dựng. –

5

BTW: Trong trường hợp bạn thực sự muốn bỏ qua tối ưu hóa xây dựng này, bạn có thể sử dụng tùy chọn dòng lệnh --rerun-tasks để thực thi mọi tác vụ. thấy documentation of gradle command-line options

+0

Tôi không hoạt động đối với tác vụ zip – Marx

0

tôi phải đối mặt với vấn đề tương tự đã thử tất cả các tùy chọn, nhưng một trong những sau làm việc cho tôi:

gradle -Dorg.gradle.daemon=false <your tasks> 
Các vấn đề liên quan