2014-12-01 52 views
5

我想在animalSniffer插件中有一項任務依賴於所有sourceSets中的所有生產類(Java,Groovy,Scala)的編譯,第二個依賴於彙編所有sourceSets中的所有測試類(可能分開testintegrationTest)。如何依賴Gradle中的所有*編譯和*測試編譯任務

我不希望依賴於*classes任務*classes任務應該依賴animalSniffer任務(其中編譯後檢測Java版本的API不兼容,並可以停止生成)。

有沒有比Gradle更好的方法來實現,比檢查AbstractCompile任務名稱的實例是否以「compileTest」開頭?

回答

2

您可以使用tasks.withType(AbstractCompile),它返回所有源集(包括Java,Groovy,Scala)的所有編譯任務。然後,您可以按照其他答案中的建議,通過消除其中包含test的所有任務來對此進行過濾。

對於一個特定的任務依賴於所有這些,你可以做到以下幾點:

myTask.dependsOn tasks.withType(AbstractCompile).matching { 
    !it.name.toLowerCase().contains("test") 
} 
+0

感謝您的回覆,但正如我在第一句話中提到的,我需要區分**生產**和**測試**編譯測試以用於我的兩個不同任務。因此我的建議是除了'AbstractCompile'任務類型之外,還要檢查任務名稱,但我更喜歡更優雅的解決方案。 – 2014-12-02 09:25:39

+0

編譯測試 - >編譯任務 – 2014-12-02 09:49:12

+0

對不起,我錯過了那部分。已編輯我的答案以過濾任務以刪除以「test」開頭的所有任務。希望有所幫助。 – 2014-12-02 12:21:34

1

如果你需要的生產和測試編譯任務/源組之間進行區分,檢查名稱是否包含test(案 - 敏感)是可用的最佳解決方案。

+0

感謝Peter澄清。 – 2014-12-02 23:02:38