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

如何在Kotlin版Gradle中为ShadowJar配置compileClasspath?

ShadowJar Groovy配置转Kotlin Gradle实现方案

问题背景

ShadowJar官方文档提供的Groovy配置代码如下:

shadowJar {
  configurations = [project.configurations.compileClasspath]
}

将该代码直接应用到Kotlin版Gradle项目时,会出现类型不匹配错误:

Type mismatch:
  inferred type is
    Array<NamedDomainObjectProvider<Configuration>>, but
    (Mutable)List<FileCollection!>! was expected

解决方案

在Kotlin DSL中,需要显式处理NamedDomainObjectProvider<Configuration>类型的配置对象,以下两种写法均可解决问题:

写法一:调用get()获取配置实例

shadowJar {
    configurations = listOf(project.configurations.compileClasspath.get())
}

写法二:使用files()转换为FileCollection

shadowJar {
    configurations = files(project.configurations.compileClasspath)
}

原因说明

Kotlin DSL中project.configurations.compileClasspath返回的是延迟加载的提供者对象(NamedDomainObjectProvider<Configuration>),而Groovy会自动隐式解包该对象。上述两种写法通过显式获取实例或转换类型,匹配了shadowJar配置所需的List<FileCollection>类型要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 00:24:17