kotlin - 如何在Kotlin中构建jacoco测试报告任务(第5级)

标签 kotlin build.gradle

我有这个Groovy脚本,我想将其转换成Kotlin(build.gradle.kts)。有人可以帮帮我还是给我指点?

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(我的尝试失败,不起作用):
    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)
    }

更新:这可能有效。没有创建XML与脚本的内容无关。查看已接受的答案。但是无论如何,可接受的答案是更合乎逻辑的重写。

最佳答案

尝试这样的事情:

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"))
            }
    )
}

关于kotlin - 如何在Kotlin中构建jacoco测试报告任务(第5级),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60324076/

相关文章:

flutter - GetStream.io通过extraField过滤事件

java - 配置 Jackson 在 Spring Boot 2.0.0.M1 中使用 SNAKE_CASE "globally"

gradle - 有没有办法在 gradle.build 文件中扩展或创建不同的 jib 配置

android - 如何从 MySQL 到 ROOM 实现 SUM()、DAY()、MONTH() 和 YEAR()

java - 使用 Retrofit 发送 FormUrlEncoded 时出现问题

android - 生物识别提示 : how to encrypt few strings?

Android Studio Gradle 不下载 maven 依赖项

android - 循环中的 Gradle 复制和重命名

android - 首次启动Android Studio时发生Gradle构建错误

android - 如何在android中存储API凭据并避免反编译攻击?