多模块项目中创建运行Detekt不同配置的自定义Gradle脚本
自定义Gradle任务运行Detekt不同Profile配置
嘿,看来你想给每个Detekt配置的Profile都单独做个Gradle任务对吧?我这就给你捋清楚怎么实现~
首先,先把你的现有Detekt配置整理成规范的代码块(我帮你补全了database的output路径,避免和其他Profile的报告互相覆盖):
detekt { version = "1.0.0.RC6-4" profile("main") { input = "$projectDir/app/src/main/java" output = "$projectDir/app/build/reports/detekt" config = "$projectDir/config/detekt-config.yml" } profile("app") { input = "$projectDir/app/src/main/java" output = "$projectDir/app/build/reports/detekt" } profile("database") { input = "$projectDir/database/src/main/java" output = "$projectDir/database/build/reports/detekt" } }
接下来,你只需要在Gradle脚本里添加自定义任务,每个任务对应一个Detekt Profile。Gradle的Detekt插件提供了io.gitlab.arturbosch.detekt.Detekt任务类型,我们可以直接用它来注册任务:
// 注册对应main Profile的任务 tasks.register("detektMain", io.gitlab.arturbosch.detekt.Detekt) { description = "运行Detekt的'main'配置项" profile = "main" // 指定要使用的Profile名称 } // 注册对应app Profile的任务 tasks.register("detektApp", io.gitlab.arturbosch.detekt.Detekt) { description = "运行Detekt的'app'配置项" profile = "app" } // 注册对应database Profile的任务 tasks.register("detektDatabase", io.gitlab.arturbosch.detekt.Detekt) { description = "运行Detekt的'database'配置项" profile = "database" }
怎么使用这些任务?
在终端里执行对应的Gradle命令就好:
- 运行main Profile:
./gradlew detektMain - 运行app Profile:
./gradlew detektApp - 运行database Profile:
./gradlew detektDatabase
一些小提示
- 避免报告覆盖:建议给不同Profile设置独立的output目录(比如我给
database改的路径),不然多个Profile的报告可能会互相覆盖,不好查看。 - 灵活配置:如果某个任务需要临时覆盖Profile的参数(比如临时修改输入路径),可以在任务块里直接添加,比如
input = files("$projectDir/app/src/test/java")。 - 整合到检查流程:如果想让这些Detekt任务在运行
./gradlew check时自动执行,可以添加依赖:tasks.check.dependsOn(detektMain, detektApp, detektDatabase)
内容的提问来源于stack exchange,提问作者isuPatches
相关产品推荐
相关产品推荐

