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

创建自定义Gradle插件时如何访问PluginDependenciesSpecScope并添加带版本插件

在自定义Gradle插件中添加带版本的插件依赖

在.gradle脚本里,我们可以直接通过plugins代码块指定带版本的插件ID:

plugins{
    id("com.google.devtools.ksp") version "1.7.0-1.0.6"
}

这段代码运行在PluginDependenciesSpecScope作用域内,所以能直接使用带版本的语法。但在自定义插件类中,直接调用project.plugins.apply("xxx")只能应用插件,没法指定版本。

要在自定义插件里实现同样的带版本插件依赖,你可以通过project.plugins.dependencies获取PluginDependenciesSpec,然后创建并应用带版本的插件依赖:

class ComposePlugin : Plugin<Project> {
    override fun apply(project: Project) {
        project.plugins.dependencies.run {
            // 创建带版本的插件依赖并应用
            apply(create("com.google.devtools.ksp") {
                version.set("1.7.0-1.0.6")
            })
        }
    }
}

额外说明

  • 如果你需要让插件版本支持用户自定义,可以把版本号定义为扩展属性,让用户在构建脚本中覆盖,比如:
    // 先定义扩展类
    abstract class ComposePluginExtension {
        abstract val kspVersion: Property<String>
    }
    
    override fun apply(project: Project) {
        // 创建扩展供用户配置
        val extension = project.extensions.create<ComposePluginExtension>("composePlugin")
        // 默认版本设置
        extension.kspVersion.convention("1.7.0-1.0.6")
    
        // 应用插件时使用扩展中的版本
        project.plugins.dependencies.run {
            apply(create("com.google.devtools.ksp") {
                version.set(extension.kspVersion)
            })
        }
    }
    
  • 确保项目配置了插件所在的仓库(比如Google、MavenCentral),否则Gradle无法拉取对应版本的插件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:31:17