You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在BuildScr自定义Gradle插件中配置Ktlint依赖遇未解析引用问题

解决buildSrc自定义Gradle插件中Ktlint引用未解析的问题

核心问题原因

出现Unresolved reference: ktlint通常是两个原因:

  • buildSrc项目未正确引入Ktlint相关依赖,导致插件代码无法找到Ktlint的API类
  • 自定义插件中未先将Ktlint插件应用到目标模块,无法访问ktlint扩展

分步解决方案

1. 配置buildSrc的依赖

在buildSrc/build.gradle.kts中添加Ktlint和Android Gradle插件的依赖,确保插件代码能获取到所需类:

plugins {
    `kotlin-dsl`
}

repositories {
    google()
    mavenCentral()
}

dependencies {
    // 引入Ktlint核心库和Gradle插件
    implementation("com.pinterest:ktlint:1.0.1")
    implementation("com.pinterest.ktlint:ktlint-gradle:1.0.1")
    // 引入Android Gradle插件,用于操作Android模块配置
    implementation("com.android.tools.build:gradle:8.1.0")
    // Kotlin Gradle插件依赖(按需添加)
    implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0")
}

2. 修改自定义插件代码

在你的SharedSettings插件类中,先应用Ktlint插件到目标项目,再配置Ktlint规则,确保Android模块能正确关联Ktlint:

import com.android.build.api.dsl.CommonExtension
import com.pinterest.ktlint.gradle.KtlintExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.configure

class SharedSettingsPlugin : Plugin<Project> {
    override fun apply(project: Project) {
        // 先给目标模块应用Ktlint插件
        project.plugins.apply("com.pinterest.ktlint")

        // 针对Android模块配置通用设置+Ktlint
        project.extensions.findByType(CommonExtension::class.java)?.run {
            // 这里可以添加你的通用Android配置,比如compileSdk、defaultConfig等
            compileSdk = 34
            defaultConfig {
                minSdk = 24
            }

            // 配置Ktlint规则
            project.configure<KtlintExtension> {
                // 自定义规则示例:禁用 wildcard imports 检查
                disabledRules.set(setOf("no-wildcard-imports"))
                // 排除build目录下的文件
                filter {
                    exclude { it.file.path.contains("/build/") }
                }
                // 开启格式化功能
                enableFormat.set(true)
            }
        }
    }
}

3. 确保插件正确注册

在buildSrc/src/main/resources/META-INF/gradle-plugins下创建插件ID对应的properties文件(比如your.shared.settings.plugin.properties),内容为:

implementation-class=com.yourpackage.SharedSettingsPlugin

4. 模块中应用自定义插件

在各Android模块的build.gradle.kts中应用你的自定义插件即可,无需重复配置Ktlint:

plugins {
    id("com.android.application") // 或 com.android.library
    kotlin("android")
    id("your.shared.settings.plugin")
}

这样所有应用了自定义插件的模块都会自动带上统一的Ktlint配置,完全避免重复代码。

内容的提问来源于stack exchange,提问作者Godlike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 02:00:23