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

Adding Gradle plugin tasks to build invocation

这是我的 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 也 运行 这两个 Cobertura 任务。

如何重新配置​​我的构建,以便 ./gradlew build 也 运行s ./gradlew cobertura coberturaCheck after 所有测试都已完成运行宁?

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

实际上,所有 Test 类型的任务都以 Cobertura 报告生成总是 运行 以及覆盖率检查的方式设置。默认情况下,这些任务只是被禁用。

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

cobertura 添加到任务图中可启用除覆盖率检查任务之外的所有 cobertura 任务。因此,如果您已经将 coberturaCheck 添加到任务图中,添加 cobertura 的唯一效果是它取决于类型为 Test.

的所有任务

在您的项目中,类型为 Test 的唯一任务是名为 test 的任务,它已经依赖于 check,它依赖于 build,依赖 coberturaCheck 来启用 cobertura 任务就足够了,所以只需在您的构建文件中执行 build.dependsOn coberturaCheck,或者如果您更喜欢它 check.dependsOn coberturaCheck.

如果您还想依赖 cobertura,因为您可能担心将来会添加任务 check 不依赖的 Test 类型的任务,你当然也可以这样做。这看起来像 build.dependsOn tasks.cobertura, coberturaCheckcheck.dependsOn tasks.cobertura, coberturaCheck.

cobertura 的额外 tasks. 是必要的,因为还有一个名为 cobertura 的项目扩展,它将在寻找名为 cobertura 的任务之前进行,所以您必须在此处明确声明您想要此任务。