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

如何在buildSrc自定义插件中应用Kotlin插件?

在buildSrc自定义插件中正确应用Kotlin插件

你在plugins块里用的kotlin("jvm")和kotlin("plugin.serialization")是Gradle提供的简写语法,实际对应完整的插件ID,或者可以用类型安全的方式直接引用插件类来应用。下面是两种可行的解决方案:

方案一:使用完整插件ID字符串

直接在pluginManager.apply中传入插件的完整ID即可,这是最直接的方式:

import org.gradle.api.Plugin
import org.gradle.api.Project

class MyPlugin : Plugin<Project> {
    override fun apply(project: Project) {
        project.pluginManager.apply("org.gradle.application")
        // 应用Kotlin JVM插件
        project.pluginManager.apply("org.jetbrains.kotlin.jvm")
        // 应用Kotlin序列化插件
        project.pluginManager.apply("org.jetbrains.kotlin.plugin.serialization")
    }
}

方案二:类型安全的应用方式(推荐)

如果希望避免字符串硬编码带来的错误,可以直接引用Kotlin插件的类来应用。不过需要先在buildSrc的构建脚本中添加Kotlin Gradle插件的API依赖:

首先修改buildSrc目录下的build.gradle.kts:

repositories {
    mavenCentral()
}

dependencies {
    implementation(gradleApi())
    // 替换为你项目使用的Kotlin版本
    implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.20")
}

然后更新自定义插件代码:

import org.gradle.api.Plugin
import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.plugin.KotlinJvmPlugin
import org.jetbrains.kotlin.gradle.plugin.KotlinSerializationPlugin

class MyPlugin : Plugin<Project> {
    override fun apply(project: Project) {
        project.pluginManager.apply("org.gradle.application")
        // 类型安全地应用Kotlin JVM插件
        project.pluginManager.apply(KotlinJvmPlugin::class.java)
        // 类型安全地应用Kotlin序列化插件
        project.pluginManager.apply(KotlinSerializationPlugin::class.java)
    }
}

两种方式都能正常生效,类型安全的方式更适合大型项目,IDE会提供代码提示,也能避免拼写错误。另外要注意,buildSrc中依赖的Kotlin插件版本最好和项目主构建脚本中使用的版本保持一致,避免出现兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:30:59