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

无法将Gradle插件添加至Kotlin DSL的settings.gradle.kts求助

问题分析与解决方案

问题根源

你的自定义插件通过implementation依赖了org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.0,当在settings.gradle.kts中应用该插件时,这个依赖会被自动添加到Settings阶段的类路径中。后续全局build.gradle.kts通过plugins块声明org.jetbrains.kotlin.android插件时,Gradle检测到类路径已存在Kotlin相关插件,但无法确定其具体版本(因为是通过自定义插件的传递依赖引入,而非标准plugins块声明),因此无法校验版本兼容性,触发报错。

解决办法

方法1:修改自定义插件的依赖范围为compileOnly

将插件中对Kotlin Gradle插件的依赖从implementation改为compileOnly,这样插件编译时能获取到API,但不会将该依赖打包到发布产物中,也就不会传递到使用项目的类路径里。

修改插件的build.gradle:

dependencies {
    // 替换原来的implementation为compileOnly
    compileOnly("org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.0")
    api("org.jfrog.buildinfo:build-info-extractor-gradle:5.2.3")
    testImplementation(kotlin("test"))
}

修改后重新发布插件到本地Maven仓库,再在项目中使用即可。

方法2:通过Gradle插件的依赖声明机制管理插件依赖

在自定义插件的gradlePlugin块中声明对Kotlin插件的依赖,而非直接在dependencies中添加,让Gradle自动处理版本兼容性,避免传递依赖冲突。

修改插件的build.gradle:

plugins {
    kotlin("jvm") version embeddedKotlinVersion
    `maven-publish`
    `kotlin-dsl`
}

// 添加gradlePlugin块声明插件信息及依赖
gradlePlugin {
    plugins {
        create("myPlugin") {
            id = "my-plugin-id"
            implementationClass = "com.your.package.MyPluginImpl" // 替换为你的插件实现类路径
            // 声明依赖的Kotlin插件
            dependencies {
                implementation plugin("org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.0")
            }
        }
    }
}

repositories {
    mavenCentral()
    gradlePluginPortal()
    google()
}

dependencies {
    // 移除原来的kotlin-gradle-plugin依赖
    api("org.jfrog.buildinfo:build-info-extractor-gradle:5.2.3")
    testImplementation(kotlin("test"))
}

kotlin {
    jvmToolchain(17)
}

方法3:在使用项目中排除自定义插件的传递依赖

如果无法修改自定义插件代码,可以在项目的settings.gradle.kts中通过buildscript引入插件,并排除掉Kotlin Gradle插件的传递依赖:

pluginManagement {
    repositories {
        google {
            content {
                includeGroupByRegex("com\\.android.*")
                includeGroupByRegex("com\\.google.*")
                includeGroupByRegex("androidx.*")
            }
        }
        mavenCentral()
        gradlePluginPortal()
        mavenLocal()
    }
}

buildscript {
    repositories {
        mavenLocal()
        mavenCentral()
        gradlePluginPortal()
        google()
    }
    dependencies {
        classpath("your.group.id:my-plugin-id:1.0-SNAPSHOT") {
            // 排除传递的Kotlin Gradle插件依赖
            exclude(group = "org.jetbrains.kotlin", module = "kotlin-gradle-plugin")
        }
    }
}

// 应用自定义插件
apply(plugin = "my-plugin-id")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 23:18:14