Issue for generating jacoco report

news
not-a-bug

(Caesar) #1

I am trying to generate jacoco report for multiple subprojects, ‘adapter’, ‘application’, ‘domain’, ‘test’.

I have build.gradle for the root project as follows.

allprojects {
apply plugin: 'jacoco'
apply plugin: 'eclipse'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'java'

repositories {
    mavenCentral()
}

sourceCompatibility = 1.8

dependencyManagement {
    imports {
        mavenBom 'io.spring.platform:platform-bom:Brussels-RELEASE'
    }
}
jacoco {
	toolVersion = "0.7.6.201602180812"
}


def BUILDROOT = "C:/Works/coveragetest-master"


task jacocoMerge(type: JacocoMerge) {
    destinationFile = file("${buildDir}/jacoco/jacoco.exec")
	def subprojectsNames = [
		'adapter', 'application', 'domain', 'test'
	]
	def jacocoFiles = []
	jacocoFiles << file("${BUILDROOT}/adapter/build/jacoco/test.exec")
	jacocoFiles << file("${BUILDROOT}/application/build/jacoco/test.exec")
	jacocoFiles << file("${BUILDROOT}/domain/build/jacoco/test.exec")
	jacocoFiles << file("${BUILDROOT}/test/build/jacoco/test.exec")
	executionData = files(jacocoFiles)
}

task collectJacocoTestReport(type: JacocoReport) {
    dependsOn(jacocoMerge)


    reports {
        xml.enabled = true
        html.enabled = true
		html.destination "${buildDir}/reports/jacoco/html"
    }
	executionData = files('build/jacoco/jacoco.exec')
    additionalSourceDirs = files(subprojects.sourceSets.main.allSource.srcDirs)
    sourceDirectories = files(subprojects.sourceSets.main.allSource.srcDirs)
    classDirectories = files(subprojects.sourceSets.main.output)
    classDirectories = files(classDirectories.files.collect {
        fileTree(dir: it,
    	        exclude: ['**/io/grpc/okhttp/internal/**'])
    })
}

}

And here is the build.gradle for one of the subprojects.

apply plugin: "jacoco"

dependencies {
    compile project(":application")

    compile('org.springframework:spring-web')
	testCompile group: 'junit', name: 'junit', version: '4.+'
    testCompile('junit:junit')
    testCompile('org.mockito:mockito-core')
}

All the build.gradle files are simple for subprojects.

I am trying to merge all the reports into a single report based on the jacoco.exec generated from the subprojects.

When I execute “gradle clean build collectJacocoTestReport”, I see all the jacoco reports generated in the subproject/build/reports/jacoco and jacoco.exec and test.exec under subproject/build/jacoco. I don’t know why there are two exec files under subproject/build/jacoco. Anyway, it seems to merge into a single exec file, but it doesn’t generate rootproject/build\reports\jacoco\html.

Can anybody point out which part is wrong?

Thanks.