如何在Gradle Kotlin构建中配置processResources任务

我有一个基于groovy的构建脚本中的以下内容。 如何在基于kotlin的脚本中执行相同的操作?

processResources { filesMatching('application.properties'){ expand(project.properties) } } 

我认为任务应该是这样的:

编辑 :根据这个评论在gradle / kotlin-dsl存储库。 任务配置应该这样工作:

 import org.gradle.language.jvm.tasks.ProcessResources apply { plugin("java") } (tasks.getByName("processResources") as ProcessResources).apply { filesMatching("application.properties") { expand(project.properties) } } 

这是非常丑陋的。 所以我建议为此目的下面的效用函数,直到一个上游完成:

 configure("processResources") { filesMatching("application.properties") { expand(project.properties) } } inline fun  Project.configure(name: String, configuration: C.() -> Unit) { (this.tasks.getByName(name) as C).configuration() } 

通过更新Kotlin DSL和Gradle新版本中的API,您可以执行如下操作:

 import org.gradle.language.jvm.tasks.ProcessResources plugins { java } tasks { "processResources"(ProcessResources::class) { filesMatching("application.properties") { expand(project.properties) } } } 

并且:

 val processResources by tasks.getting(ProcessResources::class) { filesMatching("application.properties") { expand(project.properties) } } 

为什么不使用“withType”? 我只是(恕我直言)

 tasks { withType { .. } 

看起来好多了

 tasks { "processResources"(ProcessResources::class) { .. } 

所以,

 tasks.withType { //from("${project.projectDir}src/main/resources") //into("${project.buildDir}/whatever/") filesMatching("*.cfg") { expand(project.properties) } }