如何在Gradle KTS脚本中正确获取runtime classpath?
Gradle KTS 获取runtime classpath的正确写法
Groovy脚本支持隐式的Provider自动解包,所以你可以直接写sourceSets.main.runtimeClasspath获取运行时类路径,但KTS是强类型语言,不会做隐式解包,你遇到的报错就是因为sourceSets.main在KTS中是NamedDomainObjectProvider<SourceSet>类型,不是直接的SourceSet实例,无法直接访问runtimeClasspath属性。
正确的写法分以下几种常用场景:
- 直接获取运行时类路径实例
val runtimeCp = sourceSets.main.get().runtimeClasspath
调用get()可以从Provider中拿到实际的SourceSet对象,之后就能正常访问runtimeClasspath属性。
- 在自定义任务中打印运行时类路径
tasks.register<DefaultTask>("printRuntimeCp") { doLast { println("运行时类路径:${sourceSets.main.get().runtimeClasspath.asPath}") } }
- 声明自定义配置时继承runtimeClasspath
val customRuntime by configurations.creating { extendsFrom(configurations.runtimeClasspath.get()) }
如果你使用的是较新版本的Gradle,也可以用以下简化写法,效果完全一致:
val runtimeCp = sourceSets["main"].runtimeClasspath
内容的提问来源于stack exchange,提问作者Jason Lee
相关产品推荐
相关产品推荐

