Jacoco 不生成 xml 文件
Posted
技术标签:
【中文标题】Jacoco 不生成 xml 文件【英文标题】:Jacoco does not generate xml file 【发布时间】:2020-09-20 06:30:31 【问题描述】:我正在使用 gradle 与 kotlin 合作。现在我需要改进代码,我正在使用带有 jacoco 的 sonarqube。但我的覆盖率始终为 0.0%。 我的毕业典礼:
plugins
kotlin("jvm") version "1.3.70"
id("org.sonarqube") version "2.8"
jacoco
`maven-publish`
repositories
mavenLocal()
jcenter()
sonarqube
properties
property("sonar.host.url", "http://localhost:9000")
property("sonar.language", "kotlin")
property("sonar.sourceEncoding", "UTF-8")
property("sonar.projectName", "Commons.Pulsar")
property("sonar.projectKey", "Aries.kt")
property("sonar.projectVersion", "0.0.1")
property("sonar.sources", "src/main/kotlin/")
property("sonar.junit.reportPaths", "src/test/kotlin/")
property("sonar.login", "admin")
property("sonar.password", "admin")
property("sonar.coverage.jacoco.xmlReportPaths", "build/jacoco/test/jacocoTestReport.xml")
java
withJavadocJar()
withSourcesJar()
publishing
publications
create<MavenPublication>("mavenJava")
from(components["java"])
tasks
test
useJUnitPlatform()
testLogging
events("passed", "skipped", "failed")
jacocoTestReport
reports
xml.isEnabled = true
compileKotlin
kotlinOptions.jvmTarget = "11"
compileTestKotlin
kotlinOptions.jvmTarget = "11"
但我注意到没有创建 jacocoTestReport.xml。没有创建 xml。 有人可以帮忙吗?
【问题讨论】:
将 jacocoTestReport 块放在任务块之外是否有效? 【参考方案1】:你不需要指定sonar.coverage.jacoco.xmlReportPaths
属性,你只需要确保任务jacocoTestReport
在sonarqube
目标之前执行。 sonarqube gradle 插件足够智能,可以根据 jacoco 报告检测配置。例如,我链接Junit Pioneer build configuration,我们也这样做。
一般来说,sonarqube gradle 插件非常强大,如果你使用所有带有 gradle 的构建,你的 sonarqube 块只需要看起来像这样
sonarqube
properties
property("sonar.host.url", "http://localhost:9000")
property("sonar.sourceEncoding", "UTF-8")
property("sonar.login", "admin")
property("sonar.password", "admin")
因为它会从您的 gradle 配置中检测其余部分,如 sonarqube documentation 中所述
【讨论】:
以上是关于Jacoco 不生成 xml 文件的主要内容,如果未能解决你的问题,请参考以下文章
Android - Jacoco 无法正确生成 xml 报告(已解决)