创建自定义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
相关产品推荐
相关产品推荐

