Thứ tự của phương thức doFirst được xác định trong tập lệnh xây dựng gradle như thế nào? Tôi có tập lệnh mẫu sau có chứa hai phương thức doFirst. Tôi hiểu rằng họ là phụ, vì cả hai đều thực hiện, nhưng theo thứ tự mà điều này xảy ra nhìn lại quá khứ:Gradle doFirst() Lệnh thi hành
task initialize
task depTask(dependsOn: initialize)
initialize {
doFirst {
println 'processing doFirst in initialization (configuration)'
}
println 'processing initialize (configuration)'
}
depTask {
println 'processing depTask (configuration)'
}
depTask << {
println 'executing depTask (execution)'
}
initialize << {
println 'executing initialize (execution)'
}
initialize.doFirst {
println 'executing doFirst on initialize (execution)'
}
Kết quả của kịch bản này là:
processing initialize (configuration)
processing depTask (configuration)
executing doFirst on initialize (execution)
processing doFirst in initialization (configuration)
executing initialize (execution)
executing depTask (execution)
Việc đầu tiên "doFirst" chức năng được xác định trong tác vụ khởi tạo. Thứ hai được định nghĩa bên ngoài khối cấu hình. Tại sao trường hợp đầu tiên không thực hiện trước phiên bản thứ hai? Thứ tự thực hiện trông lạc hậu. Tôi đã mong đợi cái đầu tiên, bên trong định nghĩa cấu hình, để thực thi đầu tiên. Bất kỳ trợ giúp nào hiểu được điều này sẽ được đánh giá cao.
'println 'processing doFirst in initialization (configuration)'' Tôi không nghĩ điều này xảy ra trong giai đoạn cấu hình. –