首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为自定义detekt gradle任务启用类型解析?

如何为自定义detekt gradle任务启用类型解析?
EN

Stack Overflow用户
提问于 2021-04-05 19:21:08
回答 1查看 459关注 0票数 1

我有一个定制的gradle任务,只在作为参数传递的文件上运行detekt

代码语言:javascript
复制
tasks.register("detektCustom", io.gitlab.arturbosch.detekt.Detekt.class) { detektTask ->
    detektTask.config.from("$rootDir/app/config/detekt/detekt.yml")
    detektTask.jvmTarget = "1.8"
    detektTask.classpath.setFrom(project.configurations.getByName("detekt"))
    detektTask.reports {
        txt {
            enabled = true
            destination = file("${project.buildDir}/reports/detekt/detekt.txt")
        }
        xml {
            enabled = true
            destination = file("${project.buildDir}/reports/detekt/detekt.xml")
        }
        html {
            enabled = false
            destination = file("${project.buildDir}/reports/detekt/detekt.html")
        }
    }

    if (project.hasProperty("kotlinFiles")) {
        def kotlinFiles = project.property("kotlinFiles")
        def listOfFiles = kotlinFiles.split(",")
        detektTask.source = files(listOfFiles)
    }
}

但是使用类型解析的自定义detekt规则在这个gradle任务中不能正常工作。

我已经读过,传递适当的classpathjvmTarget应该有效。我是不是在上面的分级任务中遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-23 14:41:47

更新:

我找到了办法。将其添加到detekt任务配置中。

对于android模块:

代码语言:javascript
复制
def baseExtension = project.extensions.findByType(com.android.build.gradle.BaseExtension.class)
    def bootClasspath = project.files(baseExtension.bootClasspath)
    baseExtension.applicationVariants.all { variant ->
        if (variant.name.contains("buildFlavorNameHere")) {
            classpath.setFrom(variant.getCompileClasspath(null).filter { it.exists() } + bootClasspath)
        }
    }

图书馆模块:

代码语言:javascript
复制
def baseExtension = project.extensions.findByType(com.android.build.gradle.BaseExtension.class)
        def bootClasspath = project.files(baseExtension.bootClasspath)
        baseExtension.libraryVariants.all { variant ->
            if (variant.name.contains("buildFlavorNameHere")) {
                classpath.setFrom(variant.getCompileClasspath(null).filter { it.exists() } + bootClasspath)
            }
        }

唯一的区别是baseExtension.applicationVariantsbaseExtension. libraryVariants

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66958595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档