gradle - 如何让 sonarqube 依赖 jacocoTestReport?

标签 gradle sonarqube jacoco

为什么这行不通,我怎样才能得到我想要的结果?具体来说,我希望 jacoco 在 sonarqube 之前运行。

subprojects {
    apply plugin: 'java'
    apply plugin: 'idea'
    apply plugin: 'eclipse'
    apply plugin: 'jacoco'

    test {
        jacoco {
            excludes = [...,
                         "javolution.*"]
        }
    }

    jacocoTestReport {
        dependsOn tasks.withType(Test)//This makes integrationTests go. 
    }

//This is the part that I can't get to work:
project.tasks["sonarqube"].dependsOn jacocoTestReport
}

错误是:

* Where:
Build file '/dev/abc/build.gradle' line: 92

* What went wrong:
A problem occurred evaluating root project 'abc'.
> Task with name 'sonarqube' not found in project ':thingamajig'.

当然 thingamajig 是一个空的父目录。那里没有 build.gradle,但它有许多子目录确实有 build.gradle。我已经尝试了很多事情,例如检查任务图和在调用 project.tasks.getByName() 时捕获异常,我猜是时候下注了。

最佳答案

子项目没有自己的 Sonar 运行器任务。使根项目 sonar runner 任务依赖于子项目 jacocoTestReport 任务。

在我的 build.gradle 中看起来像

if (hasProperty('sonarAnalyseOnly') && sonarAnalyseOnly.toBoolean()) {
   tasks.sonarRunner.dependsOn = []
} else {
   tasks.sonarRunner.dependsOn {
      project.subprojects.findAll { !it.sonarRunner.skipProject }.collect {
         [
               it.tasks.compileSharedJava,
               it.tasks.compileServerJava,
               it.tasks.compileGuiJava,
               it.tasks.integTest,
               it.tasks.jacocoMerge
         ]
      }.flatten()
   }
}

关于gradle - 如何让 sonarqube 依赖 jacocoTestReport?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36945594/

相关文章:

java - Gradle 错误 : java. lang.String 无法转换为 org.gradle.api.artifacts.Configuration

react-native - 无法编译android代码-无法解析java.lang.Object错误

android - 使用maven发布找不到传递依赖

java - Sonar - 将 DATE_FORMAT 作为实例变量

jenkins - 同一台机器上有 2 个 Sonar 实例

sonarqube - 如何在不使用Maven的情况下将Jacoco报告与SonarQube集成?

gradle - JaCoCo Gradle Kotlin DSL 从违规规则中排除文件

gradle - 如何在 Gradle Kotlin DSL 中定义 Jacoco 报告聚合?

git - merge 请求中的 SonarQube 和 BitBucket 集成

spring-boot - 使用 Spring Boot 时,使用 JaCoCo 代码覆盖率进行 Gradle 多项目构建失败