2016-11-17 38 views
5

tôi đã thêm một nhiệm vụ cho dự án gradle tôi:Bỏ qua một nhiệm vụ khi chạy một nhiệm vụ

task deploy() { 
    dependsOn "build" 
    // excludeTask "test" <-- something like this 

    doFirst { 
     // ... 
    } 
} 

Bây giờ nhiệm vụ build luôn chạy trước khi nhiệm vụ deploy. Điều này là tốt bởi vì nhiệm vụ xây dựng có nhiều bước đi kèm. Bây giờ tôi muốn vô hiệu hóa một cách rõ ràng một trong những nhiệm vụ này.

Thường thì tôi vô hiệu hóa nó từ dòng lệnh với

gradle deploy -x test 

Làm thế nào tôi có thể loại trừ các nhiệm vụ test lập trình?

Trả lời

9

Bạn cần định cấu hình đồ thị nhiệm vụ thay vì định cấu hình tác vụ deploy. Đây là đoạn mã bạn cần:

gradle.taskGraph.whenReady { graph -> 
    if (graph.hasTask(deploy)) { 
     test.enabled = false 
    } 
} 
1

Tôi không biết nhiệm vụ triển khai của bạn là gì, nhưng có lẽ không nên phụ thuộc vào tác vụ 'xây dựng'. Nhiệm vụ 'xây dựng' là một nhiệm vụ vòng đời hạt rất thô bao gồm rất nhiều thứ bạn có thể không muốn. Thay vào đó, nó phải xác định chính xác các đầu vào của nó (có thể là các tạo tác mà bạn muốn triển khai) và sau đó Gradle sẽ chỉ chạy các tác vụ cần thiết để xây dựng các đầu vào đó. Sau đó, bạn không còn cần bất kỳ loại trừ nào.

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