2016-07-29 87 views
0

請在下面找到有我所有項目的共同任務init.gradle文件: -gradle這個初始化腳本任務不調用:搖籃2.14.1

rootProject { apply plugin: "eclipse" } 

gradle.allprojects{ 
    ext.commonTaskForEveryBuild = { 
     println "Common task for every build starts here..." 
     println "Common task for every build ends here..." 
    } 
} 

還發現下面的示例的build.gradle對我的一個項目: -

apply plugin : 'java' 

clean.doFirst{ 
    println "Before invoking commonTaskForEveryBuild" 

    //This is invocation of commonTaskForEveryBuild 
    commonTaskForEveryBuild 

    println "After invoking commonTaskForEveryBuild" 
} 

下面是的 「gradle這個乾淨」 任務的執行對樣品的build.gradle文件日誌: -

:乾淨

之前調用commonTaskForEveryBuild

調用 commonTaskForEveryBuild

後:清理-TO-DATE

生成成功

總時間:3.722秒

看起來乾淨.doFirst被調用,但事實並非如此調用commonTaskForEveryBuild的定義。雖然沒有編譯時或運行時錯誤。 請建議。

回答

1

沒關係,你的任務沒有被調用,因爲你的腳本沒有試圖去做,它甚至不是一個任務。你只是得到你的commonTaskForEveryBuild實例,但是什麼都不做。

您可能需要閱讀the official user guide以瞭解如何從另一個任務調用一個任務。總之 - 這通常是通過任務依賴關係完成的。你必須讓你的clean任務取決於commonTaskForEveryBuild任務在clean任務執行之前運行它。可以這樣做,像這樣:

clean.dependsOn commonTaskForEveryBuild 

此外,它的所有有關的任務,但在你的情況ext.commonTaskForEveryBuild = {...}甚至不是一個任務,而只是一個封閉,它必須作爲commonTaskForEveryBuild()

執行