2014-07-15 105 views
2

如果我創建了一個自定義任務:如何聲明Gradle自定義任務的依賴關係?

class MyTask extends DefaultTask { 
    ... 
} 

我可以在其他時間創建一個實例並聲明依賴:

task(["type": MyTask, "dependsOn": importantThing], "MyTaskName") 

然而,這似乎有點不可思議的任務定義從分離依賴關係的聲明。也就是說,似乎所有定義任務的東西都應該在一個地方,否則很容易在沒有正確的依賴關係的情況下實例化任務。有沒有更好的方法來做到這一點?

+0

您可以使用'dependsOn'來配置構造函數中的依賴關係。但是必須在那裏使用字符串,因爲在任務創建時其他任務可能不存在。 – Opal

回答

2

任務應該是通用且自包含的。他們只能在自己的輸入屬性上操作,並且不應該假設存在其他任務。聲明任務及其依賴關係是構建腳本和/或插件的責任。

+0

因此,不應該有任何依賴於其他任務的任務?一般不測試任務取決於能夠編譯/運行代碼嗎?想到沒有Java的JaCoCo就毫無意義了。從http://www.gradle.org/docs/current/userguide/jacoco_plugin.html開始,「如果Java插件也應用於您的項目,則會創建一個名爲jacocoTestReport的新任務,該任務取決於測試任務。」我誤解了嗎? – akroy

+0

「測試」任務需要類文件作爲其輸入;它並不在乎它們來自哪裏。您引用的行爲由JaCoCo *插件*提供。 –