val jacocoTestResultTaskName = "jacocoTestReport"
subprojects {
jacoco {
toolVersion = "0.8.7"
}
val sourceSets = java.sourceSets
task<JacocoReport>(jacocoTestResultTaskName) {
executionData(files("${buildDir}/jacoco/jvmTest.exec"))
sourceSets(sourceSets["kotlin"])
sourceDirectories.setFrom(files(sourceSets["kotlin"].allSource.srcDirs))
classDirectories.setFrom(files(sourceSets["kotlin"].output))
reports {
xml.required.set(true)
csv.required.set(false)
html.outputLocation.set(layout.buildDirectory.dir("jacocoHtml"))
}
}
}
jacoco {
toolVersion = "0.8.7"
}
tasks.register<JacocoReport>("codeCoverageReport") {
val jacocoReportTasks =
subprojects
.map { it.tasks[jacocoTestResultTaskName] as JacocoReport }
dependsOn(jacocoReportTasks)
val executionData = [[jacocoReportTasks.map](http://jacocoReportTasks.map)]([http://jacocoReportTasks.map](http://jacocoReportTasks.map)) { it.executionData }
executionData(*executionData.toTypedArray())
subprojects.forEach { testedProject ->
val sourceSets = testedProject.java.sourceSets
additionalSourceDirs.setFrom(files(sourceSets["kotlin"].allSource.srcDirs))
sourceDirectories.setFrom(files(sourceSets["kotlin"].allSource.srcDirs))
classDirectories.setFrom(files(sourceSets["kotlin"].output))
}
reports {
xml.required.set(true)
csv.required.set(false)
html.outputLocation.set(layout.buildDirectory.dir("jacocoHtml2"))
}
onlyIf {
true
}
}