gpt4 book ai didi

gradle - 如何在 Gradle Kotlin DSL 中定义 Jacoco 报告聚合?

转载 作者:行者123 更新时间:2023-12-03 02:43:23 25 4
gpt4 key购买 nike

在 Gradle Groovy 我使用

task jacocoRootReport(type: JacocoReport) {
dependsOn = subprojects.test

subprojects.each {
sourceSets it.sourceSets.main
}

executionData.from fileTree(project.rootDir.absolutePath).include("**/build/jacoco/*.exec")

reports {
html.enabled = true
xml.enabled = true
csv.enabled = false
}
}

但我不知道如何将其转换为 Kotlin DSL,以便子项目的 Jacoco 结果可以聚合到根项目中的一份报告中。

最佳答案

我建议配置和使用现有任务 jacocoTestReport因为它已经预定义了源集。

我必须做的最小更改是添加:

tasks.jacocoTestReport {
reports {
xml.isEnabled = true
}
dependsOn(allprojects.map { it.tasks.named<Test>("test") })
}

并且报告是在 build\reports\jacoco\test\jacocoTestReport.xml 中生成的.

如果你真的需要定义你自己的任务,你可以像 jacocoTestReport 一样聚合源集。任务是:
sourceSets(project.extensions.getByType(SourceSetContainer::class.java).getByName("main")) 

(来自 gradle-6.2\src\jacoco\org\gradle\testing\jacoco\plugins\JacocoPlugin.java#addDefaultReportTask)

最终代码可能如下所示:

tasks.register<JacocoReport>("codeCoverageReport") {

executionData(fileTree(project.rootDir.absolutePath).include("**/build/jacoco/*.exec"))

sourceSets(project.extensions.getByType(SourceSetContainer::class.java).getByName("main"))

reports {
xml.isEnabled = true
xml.destination = File("${buildDir}/reports/jacoco/report.xml")
html.isEnabled = false
csv.isEnabled = false
}

dependsOn(allprojects.map { it.tasks.named<Test>("test") })
}

关于gradle - 如何在 Gradle Kotlin DSL 中定义 Jacoco 报告聚合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53521328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com