添加Gradle插件任务以构建调用

时间:2016-05-24 16:50:42

标签: gradle groovy cobertura gradle-plugin

这是我的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 个答案:

答案 0 :(得分:1)

我已经快速浏览了Cobertura插件的来源 测试必须为Cobertura等运行的依赖项都是由插件正确设置的,因此正确的顺序应该被认为是正确的。

实际上,Test类型的所有任务都是以这样的方式设置的,即Cobertura报告生成始终在它们之后运行以及覆盖检查。默认情况下,这些任务只是被禁用。

coberturaCheck添加到要执行的任务图中可启用所有cobertura任务,包括覆盖检查任务。

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的项目扩展名,因此您必须明确说明你想要这里的任务。