2015-12-30 26 views
9

Tôi có một dự án Android với nhiều mô-đun. Tôi đang cố gắng để chạy một nhiệm vụ gradle tùy chỉnh từ một trong các mô-đun, nhưng mỗi lần tôi chạy nhiệm vụ tất cả các nhiệm vụ gradle khác trong mô-đun cũng như trong các mô-đun khác. Nhiệm vụ của tôi không phụ thuộc vào bất kỳ nhiệm vụ nào khác. Công việc:Thực hiện nhiệm vụ tùy chọn gradle độc ​​lập trong studio android

task helloTask{ 
    println "Hello task" 
} 

Tôi đã thử chạy tác vụ này thông qua cửa sổ đầu cuối trong studio cũng như từ dòng lệnh.

Trả lời

9

Gradle sẽ thực hiện tất cả các tác vụ không được khai báo với << trong giai đoạn cấu hình. Nếu bạn muốn trì hoãn việc thực hiện một nhiệm vụ cho đến giai đoạn thi công sau đó bạn chỉ có thể thêm <<

Trong bạn build.gradle

task helloConfiguration { task -> 
    println "Hello configuration phase task! $task.name" 
} 

/* Notice the `<<` this denotes to gradle to not execute 
* the closure during the configuration phase. Instead 
* delay closure's execution till the execution phase. 
*/ 
task helloExecution << { task -> 
    println "Hello execution phase task! $task.name" 
} 

helloExecution.dependsOn helloConfiguration 

Sau đó, khi thực hiện các nhiệm vụ helloExecution chúng ta thấy cả hai chạy, trật tự đảm bảo. Tiếp theo nếu chúng ta chỉ muốn chạy các nhiệm vụ cấu hình xây dựng, chúng ta có thể làm điều đó một cách riêng biệt nếu chúng ta muốn và chỉ chạy một tác vụ duy nhất.

$ gradle helloExecution 
Hello configuration phase task! helloConfiguration 
Hello execution phase task! helloExecution 
:helloConfiguration UP-TO-DATE 
:helloExecution UP-TO-DATE 

BUILD SUCCESSFUL 

Total time: 0.64 secs 

$ gradle helloConfiguration 
Hello configuration phase task! helloConfiguration 
:helloConfiguration UP-TO-DATE 

BUILD SUCCESSFUL 

Total time: 0.784 secs 

Nhiệm vụ chạy trong giai đoạn cấu hình sẽ luôn được thực thi ngay cả khi không có tác vụ được cung cấp, đó là hành vi tôi mong đợi bạn thấy. Vì vậy, cho ví dụ trên. Lưu ý rằng tác vụ cấu hình đã chạy nhưng không chạy được.

$ gradle 
Hello configuration phase task! helloConfiguration 
:help 

Welcome to Gradle 2.10. 

To run a build, run gradle <task> ... 

To see a list of available tasks, run gradle tasks 

To see a list of command-line options, run gradle --help 

To see more detail about a task, run gradle help --task <task> 

BUILD SUCCESSFUL 

Total time: 0.651 secs 

Vì vậy, nếu bạn có 5 nhiệm vụ chạy trong giai đoạn cấu hình thì bạn sẽ thấy tất cả chúng thực thi, bất kể tác vụ mà dòng lệnh args đã cố gắng gọi cho mục tiêu của giai đoạn thực hiện.

+0

tôi muốn chạy tác vụ không phụ thuộc vào bất kỳ tác vụ mặc định nào. Chỉ muốn chạy một nhiệm vụ cụ thể, không phải là có thể? –

+0

Nếu bạn biết những nhiệm vụ nào bạn muốn loại bỏ, bạn có thể chỉ định chúng rõ ràng trong dòng lệnh 'gradle myTask -x someTaskThatShouldNotRun' – JBirdVegas

+3

Thật không may, những câu trả lời này không giải quyết được câu hỏi. – JoshuaTree

0

Bạn có thể sử dụng Chạy cấu hình để đạt được điều tương tự. Tham khảo: https://developer.android.com/studio/run/rundebugconfig.html

Đi tới -> Chỉnh sửa cấu hình -> Nhấp vào + để thêm cấu hình mới -> Chọn Gradle từ danh sách xuất hiện. Cuối cùng chọn ứng dụng và nhập vào tác vụ bạn muốn chạy. Android Studio thậm chí sẽ cung cấp tính năng tự động hoàn tất cho tương tự.

Sau đó, chạy tác vụ đó sẽ có sẵn dưới dạng tùy chọn trực tiếp trong menu "Chạy".

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