Tôi đang học Gradle và cố gắng hiểu cách các tệp đầu vào và đầu ra xác định xem tác vụ có được cập nhật hay không.Đầu vào và đầu ra Gradle
Tác vụ này không bao giờ được cập nhật, ngay cả khi tệp xây dựng không thay đổi.
task printFoo() {
inputs.file(getBuildFile())
doLast {
println 'foo'
}
}
Tác vụ này luôn được cập nhật, ngay cả khi tệp xây dựng thay đổi.
task printFoo() {
outputs.file(getBuildFile())
doLast {
println 'foo'
}
}
Tôi đã mong đợi cả hai ví dụ để xem xét tác vụ lỗi thời chỉ khi tệp xây dựng thay đổi và cập nhật theo cách khác. Tôi đang thiếu gì?
Tôi đã kiểm tra lại với một số tệp: trạng thái luôn được cập nhật khi chỉ có đầu ra được chỉ định. Khi cả hai đầu vào và đầu ra được chỉ định, trạng thái thay đổi như mong đợi (ngay cả khi đầu vào và đầu ra là cùng một tệp). Tôi đã chấp nhận câu trả lời này dựa trên tuyên bố, "_Gradle cần dấu thời gian cho đầu vào và đầu ra." "Thử nghiệm của tôi cho thấy rằng cả hai đều được yêu cầu. – jaco0646
Nghe có vẻ giống như một con bọ. Nhưng tôi không có một đầu mối những người nên thay đổi các tập tin đầu ra và khi nào để làm điều này, cho một nhiệm vụ với kết quả đầu ra chỉ được coi là lỗi thời. Bạn có nên chạm/thay đổi kết quả đầu ra trong giai đoạn cấu hình của tác vụ đó không? Ngữ nghĩa không rõ ràng theo ý kiến của tôi. Tốt nhất là luôn luôn chỉ định đầu vào và đầu ra cho hành vi đáng tin cậy. –