2012-12-11 180 views
7

是否可以從另一個任務定義繼承一個任務定義?我想要做的是創造一些測試配置文件,所以我不得不默認測試 -Gradle任務定義繼承

test { 

    include 'com/something/something/**' 
    exclude 'com/something/else/**' 

    maxParallelForks 5 

    testLogging{ 
     exceptionFormat "full" 
     showStackTraces = false 
    } 

    jvmArgs '-Xms128m', '-Xmx512m', '-XX:MaxPermSize=128m' 
} 

,並與被覆蓋的「有」或「maxParallelForks」部分有些另一個測試等

是否有可能不創建新的任務類?

回答

10

你可以一次性配置所有這些任務,只要是使用下面的結構類型相同的:

tasks.withType(Test) { 
    include 'com/something/something/** 
    ... 
} 

這種配置類型「測試」的所有任務一氣呵成。之後,您可以覆蓋配置。

或者如果您不想設置所有任務,或者其中一些具有不同的類型,您可以像下面的代碼片段一樣列舉它們。

["test","anotherTestTask"].each { name -> 
    task "$name" { 
    include ... 
    } 
} 

記住,你的Groovy的完整的腳本力量,所以有很多的選擇在這裏...

+1

謝謝,我想我會用你的第一個構建「tasks.withType(測試去)*。配置...」 。我仍然很好奇,但是如果有一種構建繼承樹的方式 - 有一些全局測試定義,那麼一些testSuite1擴展全局測試,然後是一些testSuite2擴展testSuite2,...我知道有一些「黑客」可以實現這一點,但我仍然希望看到一些很好的DSL支持。 – mawek

+1

語法可以簡化爲'tasks.withType(Test){...}'和'task「$ t」{...}'。我們相信顯式的*配置規則*比擁有所有隱藏語義的繼承機制更好。因此我們沒有計劃添加一個。 –

+0

感謝您的簡化Peter :) –