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

在buildSrc的Kotlin DSL Gradle插件中修改任务失败求助

解决Gradle插件中修改任务的报错问题

错误原因

你直接在buildSrc的脚本顶层写任务配置,本质是在修改buildSrc自身的任务,而非应用插件的业务项目任务。同时buildSrc缺少操作测试、Kotlin编译任务所需的依赖,导致类引用和语法报错。

正确实现步骤

1. 配置buildSrc的依赖

在buildSrc/build.gradle.kts中添加必要的Gradle API和Kotlin插件依赖:

plugins {
    `kotlin-dsl`
}

repositories {
    mavenCentral()
}

dependencies {
    implementation(gradleApi())
    // 使用和项目一致的Kotlin版本
    implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.20")
    implementation(gradleTestKit())
}

2. 编写插件类

在buildSrc/src/main/kotlin/foo/bar/MyPlugin.kt(注意包结构)中创建插件类,通过apply方法操作目标项目的任务:

package foo.bar

import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.tasks.testing.Test
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

class MyPlugin : Plugin<Project> {
    override fun apply(project: Project) {
        // 配置仓库
        project.repositories {
            mavenCentral()
        }

        // 全局配置Test任务
        project.tasks.withType<Test>().configureEach {
            useJUnitPlatform()
        }

        // 全局配置Kotlin编译任务
        project.tasks.withType<KotlinCompile>().configureEach {
            kotlinOptions.jvmTarget = "11"
        }
    }
}

3. 注册插件

在buildSrc/src/main/resources/META-INF/gradle-plugins/foo.bar.properties中添加插件注册信息(文件名对应插件ID):

implementation-class=foo.bar.MyPlugin

4. 应用插件

业务项目的build.gradle.kts中依然按原方式引入:

plugins {
    id("foo.bar")
}

现在执行./gradlew clean build即可正常运行。

内容的提问来源于stack exchange,提问作者Juha Syrjälä

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 11:31:02