【发布时间】:2020-05-29 12:06:21
【问题描述】:
为什么会这样:
val runVersionSplicer by tasks.registering(type = JavaExec::class) {
classpath = sourceSets.main.runtimeClasspath // error
main = "com.concurnas.build.VersionSplicer"
}
返回:
未解决的参考。由于接收器类型不匹配,以下候选均不适用: public val NamedDomainObjectContainer.runtimeClasspath: NamedDomainObjectProvider 定义在 org.gradle.kotlin.dsl
虽然这可以正常工作?
val runVersionSplicer by tasks.registering(type = JavaExec::class) {
classpath = sourceSets["main"].runtimeClasspath
main = "com.concurnas.build.VersionSplicer"
}
我知道sourceSets.main是这么定义的:
val org.gradle.api.tasks.SourceSetContainer.`main`: NamedDomainObjectProvider<org.gradle.api.tasks.SourceSet>
get() = named<org.gradle.api.tasks.SourceSet>("main")
但是不应该替换sourceSets["main"] 构造吗?
【问题讨论】: