2014-09-27 167 views
4

我試圖獲得一個gradle任務來執行Android Studio項目中的lib模塊'lib1'。它應該使用命令'gradlew assembleDebug'或'gradlew assemble'運行,但它永遠不會運行。在Android Studio中不執行Gradle任務

task copy(type: Copy, dependsOn: ':lib1:assembleDebug') << { 
    println "copying" 
} 

我嘗試了一個簡單的任務,沒有依賴性,它似乎從來沒有運行。

task hello << { 
    println 'hello world' 
} 

這會運行,但它只在配置階段。

task hello { 
    println 'hello world' 
} 

我需要得到一個副本,在庫模塊組裝完成後的執行階段工作。任何線索怎麼辦?

回答

6

您需要以任何方式將任務添加到任務依賴關係圖。通常,通過使現有任務依賴於它。在這種情況下,copy取決於assembleDebug,這就是說,如果您運行copy任務,則必須先運行assembleDebug。這意味着運行assembleDebug將導致copy運行。將此添加到您的版本。

assemble.dependsOn copy 

現在運行gradlew assemble將導致copy任務來執行。

你的第二個任務是正確定義的,但是再次,沒有其他任務依賴於它,所以只有在你通過gradlew hello明確運行它或者通過添加如上所述的依賴關係才能執行。

您的第三項任務在配置階段打印一行,因爲該閉包僅在該階段進行評估。這是<<運營商,增加了一個doLast行動在執行時間運行。

+0

有沒有辦法讓複製任務總是在組裝完成後執行?我只是試圖在調試或發佈版本之後將庫複製到另一個位置。 – user1192805 2014-09-27 18:41:19

+1

您可以執行'assemble.finalizedBy copy'來確保它在彙編任務之後始終運行*。 – 2014-09-27 21:01:34

相關問題