我有一个多模块gradle构建,并且我试图汇总jacoco报告,但是我希望它在构建完成时发生,并且我不想将其添加到终端中gradle命令的末尾。以下是我如何配置build.gradle的代码段:
subprojects {
do stuff...
}
task jacocoRootReport(type: JacocoReport, group: 'Coverage reports') {
configure...
}
task build {
dependsOn subprojects.build
doLast {
jacocoRootReport
}
}
如果我在doLast中放入一个简单的println,它将进行打印,但是如果我在jacoco report任务中放入了println,则不会打印任何内容。 我也尝试过使用build.finalizedBy,这导致同样的执行缺失。我做错了什么? 在子任务内部build.finalizedBy可以正常工作,但在子任务之外似乎什么也没有。
*编辑* 这是根报告的实际代码。 我尝试使用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
}
}
答案 0 :(得分:0)
我将构建任务更新为“取决于”而不是doLast。这就是我想要的。 如果有更好的方法来完成我想要的事情,请随时纠正我。
task build {
dependsOn tasks.jacocoRootReport
}
我尝试使用build.finalizedBy(jacocoRootReport)并出现以下错误:
根项目中的未知属性“ build”