2015-04-29 24 views
5

Tôi bao gồm tệp gradle thứ hai my.gradle trong tệp build.gradle của tôi.Thêm phụ thuộc nhiệm vụ vào Tác vụ Plugin hiện có trong Gradle?

Nội dung của my.gradle là:

áp dụng plugin: MyPlugin

class MyPlugin implements Plugin<Project> { 

    @Override 
    void apply(Project project) { 
     project.tasks.create(name: "myTask", type: MyTaskClass) { 
     } 
    } 
} 

Trong tôi build.gradle tôi đặt ở phía trên:

apply from: 'myPlugin.gradle' 

Bây giờ tôi muốn thiết lập một sự phụ thuộc nhiệm vụ trong build.gradle với:

tasks.myPlugin.myTask.dependsOn += someOtherTask 

Khi tôi xây dựng tôi nhận được lỗi sau:

> Could not find property 'myPlugin' on task set. 

Làm thế nào tôi có thể truy cập myTask từ myPlugin trong build.gradle?

Chỉnh sửa: Tôi đã cố gắng đảm bảo rằng someTask chạy sau myTask. Tôi cố gắng để làm điều này với:

taskX.finalizedBy taskY 

trong trường hợp của tôi:

tasks.myPlugin.myTask.finalizedBy someOtherTask 

nhưng cựu không hoạt động.

+0

Đó có phải là mã psuedo không? Bạn đang thực sự cố gắng làm gì? –

+0

Có, điều này rất dễ làm trong 'Gradle', bạn có cú pháp đúng. Vấn đề là gì? Bạn có tệp 'build.gradle' để hiển thị không? –

+0

bạn dường như đang sử dụng dependsOn ngược lại. nếu A nên chạy trước B, trong định nghĩa nhiệm vụ B bạn nên nói nhiệm vụ B - phụ thuộc A xem: https://gradle.org/docs/current/userguide/more_about_tasks.html#sec:adding_dependencies_to_tasks – RaGe

Trả lời

1

Các kịch bản sau đây sẽ thực hiện công việc:

my.gradle:

apply plugin: MyPlugin 

class MyPlugin implements Plugin<Project> { 

    @Override 
    void apply(Project project) { 
     project.tasks.create(name: "myTask", type: Copy) { 
     } 
    } 
} 

xây dựng. gradle:

apply from: 'my.gradle' 

task someOtherTask << { 
    println 'doLast' 
} 

project.tasks.myTask.dependsOn(someOtherTask) 
-1

Nếu bạn đưa plugin của mình chính xác, bạn sẽ thấy nhiệm vụ của mình. Ví dụ: nếu bạn bao gồm plugin java và chạy các tiện ích

gradle --all

Bạn sẽ thấy compileJava được bao gồm. Tương tự cho bạn, chạy gradle tasks --all. Bạn sẽ có thể tham khảo nó như tasks.myTask hoặc nhiệm vụ [ 'myTask']

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