我在尝试让jacoco和sonarqube从Web服务项目使用的库项目中获取代码覆盖率结果时遇到困难。这是我的Gradle mutli-module项目的基本布局。
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项目文件夹的子目录中?