【问题标题】:Adding Gradle plugin tasks to build invocation添加 Gradle 插件任务以构建调用
【发布时间】:2016-09-22 00:29:19
【问题描述】:

这是我的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所有测试都完成运行后?

【问题讨论】:

    标签: gradle groovy cobertura gradle-plugin


    【解决方案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,因为您可能担心将来会添加不被任务check 依赖的Test 类型的任务,您当然也可以这样做。这看起来像 build.dependsOn tasks.cobertura, coberturaCheckcheck.dependsOn tasks.cobertura, coberturaCheck

    cobertura 的额外tasks. 是必要的,因为还有一个名为cobertura 的项目扩展,在寻找名为cobertura 的任务之前,你必须明确声明你想要这里的任务.

    【讨论】:

      猜你喜欢
      • 2018-05-08
      • 2018-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-08
      相关资源
      最近更新 更多