2016-05-24 53 views
0

這裏是我的build.gradle添加搖籃插件任務,以構建調用

plugins { 
    id 'net.saliman.cobertura' version '2.3.1' 
} 

apply plugin: 'groovy' 
apply plugin: 'idea' 

repositories { 
    mavenCentral() 
} 

sourceCompatibility = 1.8 
targetCompatibility = 1.8 

dependencies { 
    compile(
     'org.codehaus.groovy:groovy-all:2.4.6' 
    ) 

    testCompile(
     'org.spockframework:spock-core:1.0-groovy-2.4' 
    ) 
} 

cobertura { 
    coverageCheckTotalLineRate = 95 

    coverageCheckHaltOnFailure = true 
} 

正如你可以看到我已經設置了Gradle Cobertura插件。通過通常建立我的應用程序:

./gradlew build 

但運行的Cobertura,我要運行一個完全不同的調用:

./gradlew cobertura coberturaCheck 

我想凝結這些使運行./gradlew build也運行這些2個的Cobertura任務。

我怎樣才能重新配置我的構建,使./gradlew build也運行./gradlew cobertura coberturaCheck所有測試完成後運行?

回答

1

我已經快速瀏覽了Cobertura插件的來源。
插件正確設置了測試必須運行的依賴關係,所以正確的順序應該視爲已授權。

事實上,所有類型爲Test的任務都是以這樣的方式設置的,即Cobertura報告生成總是在它們之後運行以及覆蓋檢查。這些任務只是默認禁用。

coberturaCheck添加到要執行的任務圖可啓用所有cobertura任務,包括覆蓋檢查任務。

cobertura添加到任務圖可啓用除覆蓋檢查任務以外的所有分擔任務。因此,如果您已將coberturaCheck添加到任務圖中,則添加cobertura具有唯一影響,它取決於類型爲Test的所有任務。

在你的項目Test類型的唯一任務是叫test這已經是從check這是從build取決於取決於任務,它足以依賴於coberturaCheck啓用的Cobertura任務,所以只是做build.dependsOn coberturaCheck在你的構建文件中,或者如果你更喜歡它check.dependsOn coberturaCheck

如果仍然要依賴於cobertura還,因爲你可能會擔心Test類型的任務不是由任務check依賴於未來加入,你當然也可以做到這一點。這看起來像build.dependsOn tasks.cobertura, coberturaCheckcheck.dependsOn tasks.cobertura, coberturaCheck

額外tasks.cobertura是必要的,因爲也被稱爲cobertura項目擴展,它會尋找一個任務之前,必須採取所謂的cobertura所以你必須明確說明,你想在這裏的任務。