2014-10-28 70 views
0

我有一個任務需要配置以依賴於另一個現有發行任務。我寫的代碼片段如下,它工作正常 - 文件複製到bundleDir預期:Gradle任務的行爲與Type修飾符的行爲不同

task releaseJarsTask1 (dependsOn: releaseTask) { 
    copy { 
     from fileTree(dir: releaseRepoDir, include: (releaseTask.project.name + '*/*.jar')).files 
     into bundleDir 
    } 
} 

根據我的搖籃的相對較新的理解,下面還應該工作,但它沒有 - 它產生無輸出:

task releaseJarsTask2 (dependsOn: releaseTask, type: Copy) { 
    from fileTree(dir: releaseRepoDir, include: (releaseTask.project.name + '*/*.jar')).files 
    into bundleDir 
} 

爲什麼?

回答

0

它只是偶然地工作。在第一個任務中,您在配置階段執行復制,因爲copy()的調用是在配置閉包中完成的。在第二個任務中,複製操作只能在執行任務時完成。嘗試使用gradle releaseJarsTask2手動執行任務。

+0

謝謝馬克。這確實是這個問題,因爲我試圖掛鉤一個基於BNDTools的發佈任務 - 我把它封裝在gradle.taskGraph.whenReady中,這意味着這些任務沒有被配置爲執行。當我刪除它並做了其他一些依賴性更改時,它開始工作。 – privacycadan 2014-10-28 13:14:09

相關問題