这是我的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

最佳答案

我快速浏览了Cobertura插件的来源。
插件必须正确设置测试必须在Cobertura之前运行的依赖项,因此应该按照正确的顺序进行操作。

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

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

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

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

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

额外的coberturacobertura是必需的,因为还有一个名为cobertura的项目扩展,在寻找名为ojit_code的任务之前需要先进行扩展,因此您必须在此处明确声明要使用该任务。

关于gradle - 添加Gradle插件任务以构建调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37419559/

10-13 02:56