如何在gradle中为jar项目获取jacoco结果sonarqube?

时间:2017-01-10 15:45:53

标签: gradle sonarqube jacoco multi-module sonarqube-scan

我在尝试让jacoco和sonarqube从Web服务项目使用的库项目中获取代码覆盖率结果时遇到困难。这是我的Gradle mutli-module项目的基本布局。

    • library project1
    • library project2
    • webService项目

Gradle 2.13和org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.1-rc3

我的父项目在build.gradle中有声纳属性。我在webService项目中有一个integrationTest任务。 webService项目依赖于两个库jar项目。库项目没有集成测试配置。我可以运行我的集成测试,但是当我运行sonarqube任务时,它只报告webService项目的覆盖范围。集成测试不是在库项目中创建jacoco.exec。

如何在依赖库项目的集成测试期间获得代码覆盖率?

每个库项目的build.gradle都是这样的。 jacoco和声纳是否缺少扫描这个来源?

buildscript {
  ext { springBootVersion = '1.4.1.RELEASE' }
  dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") }
}

apply plugin: 'spring-boot'
jar { archiveName = 'schema.jar' }

configurations {
  all*.exclude group: "org.slf4j", module: "slf4j-simple"
  all*.exclude group: "org.hibernate", module: "hibernate-entitymanager"
}

dependencies {
  compile('org.springframework.boot:spring-boot-starter-data-jpa')
  compile("org.eclipse.persistence:org.eclipse.persistence.jpa:2.6.4")
  compile("org.springframework:spring-orm")
  compile('org.springframework.boot:spring-boot-starter-web')
  compile("com.oracle.jdbc:ojdbc7:12.1.0.2")

  testCompile('org.springframework.boot:spring-boot-starter-test')
}
bootRepackage { enabled = false }

修改

有没有人能够做到这一点?我找到了这个示例代码,我觉得它有点不同。

// get source dirs for project dependencies
FileCollection getSonarSrcDirs(List projects) {
    Set srcDirs = sourceSets.main.java.srcDirs
    projects.each {
        def projDir = project(it).projectDir
        srcDirs.add("${projDir}/src/main/java")
    }
    return files(srcDirs)
}
sonarqube {
    properties {
        property "sonar.sources", getSonarSrcDirs([':library1',':library2'])        
    }
}

但是当我运行声纳时,我收到以下消息。

File '/scratch/workspace/project/library1/src/main/java/Application.java' is ignored. It is not located in module basedir '/scratch/workspace/project/ws'.

我是否不允许将依赖模块放在对等目录而不是ws项目文件夹的子目录中?

0 个答案:

没有答案