[英]How to build jacoco test report task in Kotlin (Gradle 5)
I have this Groovy script that I would like to convert into Kotlin ( build.gradle.kts
).我有这个 Groovy 脚本,我想将其转换为 Kotlin (
build.gradle.kts
)。 Can somebody help me out or give me a pointer?有人可以帮助我或给我指点吗?
Groovy (works): Groovy(作品):
task jacocoTestReport(type: JacocoReport) {
group = "Reporting"
description = "Generate Jacoco coverage reports"
reports {
xml.enabled = true
html.enabled = false
csv.enabled = false
}
def fileFilter = ['**/BuildConfig.class', 'src/main/gen/**/*', 'src/main/assets/**/*',]
def debugTree = fileTree(dir: "${buildDir}/intermediates/javac/debug/classes", excludes: fileFilter)
def mainSrc = "${project.projectDir}/src/main"
sourceDirectories = files([mainSrc])
classDirectories = files([debugTree])
executionData = fileTree(dir: project.projectDir, includes: ['**/**/*.exec', '**/**/*.ec'])
}
Kotlin (my failed attempt, does not work): Kotlin(我失败的尝试,不起作用):
tasks.register("jacocoTestReport", JacocoReport::class) {
group = "Reporting"
description = "Generate Jacoco coverage reports"
this.reports.csv.setEnabled(false)
this.reports.html.setEnabled(false)
this.reports.xml.setEnabled(true)
val debugTree = fileTree("${buildDir}/intermediates/javac/debug/classes").filter { file ->
return@filter file.absolutePath.startsWith("src/main/gen/") ||
file.absolutePath.startsWith("src/main/assets/") ||
file.absoluteFile.endsWith("BuildConfig.class")
}
val mainSrc = "${project.projectDir}/src/main"
sourceDirectories.setFrom(files(mainSrc))
classDirectories.setFrom(files(debugTree))
val executionTree = fileTree(project.projectDir).filter { file ->
return@filter !(file.absoluteFile.endsWith(".exec") || file.absoluteFile.endsWith(".ec"))
}
executionData.setFrom(executionTree)
}
Update: This may work.更新:这可能有效。 That no XML is created is not related to the content of the script.
没有创建 XML 与脚本的内容无关。 See accepted answer.
请参阅接受的答案。 But anyway, the accepted answer is a more logical rewrite.
但无论如何,接受的答案是更合乎逻辑的重写。
Try something like this:尝试这样的事情:
tasks.register("jacocoTestReport", JacocoReport::class) {
group = "Reporting"
description = "Generate Jacoco coverage reports"
reports {
csv.isEnabled = false
html.isEnabled = false
xml.isEnabled = true
}
sourceDirectories.setFrom(files("${project.projectDir}/src/main"))
classDirectories.setFrom(
fileTree("${buildDir}/intermediates/javac/debug/classes") {
setExcludes(setOf("**/BuildConfig.class", "src/main/gen/**/*", "src/main/assets/**/*"))
}
)
executionData.setFrom(
fileTree(project.projectDir) {
setIncludes(setOf("**/**/*.exec", "**/**/*.ec"))
}
)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.