У меня есть многомодульная сборка gradle, и я пытаюсь объединить отчеты jacoco, но я хочу, чтобы это произошло, когда сборка завершится, и я не хочу добавлять ее в конец команды gradle в терминале.Ниже приведен фрагмент того, как я сконфигурировал build.gradle:
subprojects {
do stuff...
}
task jacocoRootReport(type: JacocoReport, group: 'Coverage reports') {
configure...
}
task build {
dependsOn subprojects.build
doLast {
jacocoRootReport
}
}
Если я помещу простую println в doLast, она распечатает его, но если я добавлю println в задачу отчета jacoco, ничего не будет напечатано.Я попытался использовать build.finalizedBy, и это приводит к тому же отсутствию выполнения.Что я делаю неправильно?внутри подзадачи build.finalizedBy работает нормально, но за пределами подзадачи, похоже, ничего не работает.
* EDIT * Здесь приведен фактический код корневого отчета.Я пытался использовать build.finalizedBy, но он не работает в корневом build.gradle, он работает только в подпроектах
task jacocoRootReport(type: JacocoReport, group: 'Coverage reports') {
println 'start'
dependsOn = subprojects.test
additionalSourceDirs = files(subprojects.sourceSets.main.allSource.srcDirs)
sourceDirectories = files(subprojects.sourceSets.main.allSource.srcDirs)
classDirectories = files(subprojects.sourceSets.main.output)
executionData = files(subprojects.jacocoTestReport.executionData)
println 'reports'
reports {
html.enabled = true
html.destination "$rootDir/build/reports/coverage/coverge-index"
xml.enabled = false
csv.enabled = false
}
println 'onlyIf'
onlyIf = {
true
}
println 'doFirst'
doFirst {
executionData = files(executionData.findAll {
it.exists()
})
}
}
task build {
dependsOn subprojects.build
doLast {
jacocoRootReport
}
}