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

如何在Gradle自定义插件中调用Kover DependencyHandler扩展?

解决Gradle自定义插件中配置Kover多项目依赖的问题

核心思路

Kover的kover依赖属于插件创建的专属依赖配置项,并非普通扩展属性,所以不能通过扩展对象直接访问,需通过DependencyHandler操作,且要确保Kover插件已提前应用到项目中。

具体实现步骤

1. 先给项目应用Kover插件

在自定义插件的apply方法中,先为根项目及目标子项目应用Kover插件:

override fun apply(project: Project) {
    // 给根项目应用Kover插件
    project.pluginManager.apply("org.jetbrains.kotlinx.kover")
    
    // 可选:批量给所有子项目应用Kover插件
    project.subprojects { subProject ->
        subProject.pluginManager.apply("org.jetbrains.kotlinx.kover")
    }
}

2. 配置根项目的Kover子项目依赖

通过DependencyHandler的add方法,直接指定kover配置名称并添加子项目依赖:

override fun apply(project: Project) {
    project.pluginManager.apply("org.jetbrains.kotlinx.kover")
    
    // 给根项目的kover配置添加子项目依赖
    project.dependencies {
        add("kover", project.project(":another:project"))
        // 如需添加多个子项目,重复调用add即可
        add("kover", project.project(":sub:project2"))
    }
}

3. 类型安全的配置方式(可选)

若想避免硬编码配置名称,可导入Kover提供的配置常量,前提是在自定义插件的构建脚本中添加Kover API依赖:
在插件的build.gradle.kts中:

dependencies {
    implementation("org.jetbrains.kotlinx:kover-gradle-plugin:0.7.4") // 替换为你使用的版本
}

然后在插件代码中导入并使用:

import org.jetbrains.kotlinx.kover.gradle.plugin.dsl.KoverNames.KOVER_CONFIG_NAME

override fun apply(project: Project) {
    project.pluginManager.apply("org.jetbrains.kotlinx.kover")
    
    project.dependencies {
        add(KOVER_CONFIG_NAME, project.project(":another:project"))
    }
}

关键说明

  • kover是Kover插件为根项目创建的专属依赖配置,不是扩展属性,因此无法通过project.extensions.getByName("kover")获取,必须用DependencyHandler.add()方法添加依赖。
  • 务必保证配置依赖前,Kover插件已完成应用,否则会因kover配置不存在抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 05:52:12