如何通过Gradle让Kotlin编译器因包与文件位置不匹配报错?
解决Kotlin包声明与文件路径不匹配的强制校验问题
一、通过Kotlin编译器强制报错
Kotlin编译器支持把「包声明和文件实际路径不匹配」的警告升级为错误,直接阻断构建流程,从根源上避免复制粘贴后忘改包名的问题。只需在项目构建配置里添加对应的编译参数:
Gradle Kotlin DSL 配置
在模块的build.gradle.kts中修改kotlinOptions:
kotlin { kotlinOptions { // 开启包名与路径不匹配的检查 freeCompilerArgs += "-Xlint:package-name" // 把这个特定警告转为错误 freeCompilerArgs += "-Xwarn-error:package-name" } }
Gradle Groovy DSL 配置
在模块的build.gradle中:
android { // 纯Kotlin项目用 kotlin { } 即可 kotlinOptions { freeCompilerArgs += ["-Xlint:package-name", "-Xwarn-error:package-name"] } }
二、通过ktlint实现强制校验
ktlint本身就内置了检查包声明与文件路径一致性的package-name规则,默认是警告级别,你可以把它改成错误级别:
方法1:修改ktlint配置文件
在项目根目录新建.ktlint.yml,添加以下内容:
rules: package-name: level: error
方法2:Gradle ktlint插件配置
如果用Gradle的ktlint插件,在build.gradle.kts里这么写:
ktlint { rulesets { rule("package-name") { level = Rule.Level.ERROR } } }
之后执行ktlint检查时,包声明不匹配的文件会被标记为错误,无法通过校验。
内容的提问来源于stack exchange,提问作者caeus
相关产品推荐
相关产品推荐

