如何在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) } }