逐步指南,将Kotlin脚本(KTS)和Groovy Build build gradle文件添加到您的Android项目中添加一尘不染的代码格式
我一直在许多开源代码中看到了这一一尘不染,事实证明,它是用于Android开发的Gradle Build System的一个非常流行的编码样式插件。 所以我尝试了一下,并在项目中使用它。这是我将此一尘不染的插件添加到现有项目中的步骤,该插件由Kotlin脚本(KTS)和Groovy Build Build build Gradle文件组成。 在项目级构建中添加 kts Groovy 在项目级构建的末尾添加以下内容。gradle/.kts。 kts Groovy 几个注: 不需要在 在您的Android Studio终端中运行以下命令。 在不进行更改的情况下检查: 检查并应用更改: SpotlessScheck对我来说有点没用。我通常只是直接直接运行。 如果遇到错误,它不会直接应用更改。我遇到的一些错误是 通配符进口 规则:标准:无妻子-Imports 通配符导入 java.lang.AsserTionError:线上错误:5,列:1 规则:标准:无妻子-Imports 通配符导入 没有空格开始功能主体 规则:标准:功能启动体间距 期望在启动功能主体之前一个单个空白 java.lang.assertionError:线上错误:7,列:57 规则:标准:功能启动体间距 期望在启动功能主体之前一个单个空白 修复了所有错误后,它将版权标头和默认编码样式应用于文件。 如果您懒惰。
在您的项目级构建中添加此内容。
kts / groovy < / strong> 官方文件很烂 - 我遵循Doc here。不,它不起作用! 一次错误 - 没有开玩笑,我的项目中有很多通配符进口。我必须修复每个错误,然后重新运行一尘不染,以解决下一个错误。幸运的是,我可以search the file content而不是依靠一尘不染。 无法禁用规则 - 我尝试过,但我没有工作。因此,我不知道这是否可行。这根本没有任何文件。 github存储库:demo_cleanemptyCompose master branch (KTS) master_groovy branch(groovy) 最初出版于https://vtsen.hashnode.dev 。
1.添加com.diffplug.spoteless插件
com.diffplug.spotless
.gradle/.kts。
plugins {
/*...*/
id("com.diffplug.spotless") version "6.19.0" apply false
}
plugins {
/*...*/
id 'com.diffplug.spotless' version '6.19.0' apply false
}
2.配置一尘不染
subprojects {
apply(plugin = "com.diffplug.spotless")
configure<com.diffplug.gradle.spotless.SpotlessExtension> {
kotlin {
target("**/*.kt")
targetExclude("$buildDir/**/*.kt")
ktlint()
licenseHeaderFile(rootProject.file("spotless/copyright.kt"))
}
kotlinGradle {
target("*.gradle.kts")
ktlint()
}
}
}
subprojects {
apply plugin: 'com.diffplug.spotless'
spotless {
kotlin {
target '**/*.kt'
targetExclude("$buildDir/**/*.kt")
ktlint()
licenseHeaderFile rootProject.file('spotless/copyright.kt')
}
groovyGradle {
target '*.gradle'
greclipse()
}
}
}
target("**/*.kt")
需要在子目录中包括所有kotlin文件。 **
指示子目录。licenseHeaderFile
在每个Kotlin文件中添加了版权文本标头。可以找到spotless/copyright.kt
文件的示例。target("*.gradle.kts")
中明确使用**
,它已经包括子目录。
3.运行一尘不染的代码格式
.\gradlew spotlessCheck
.\gradlew spotlessApply
4.在构建中自动化一尘不染
subprojects {
/*...*/
afterEvaluate {
tasks.named("preBuild") {
dependsOn("spotlessApply")
}
}
}
一尘不染的问题
例子