Search code examples
gradlekotlingradle-kotlin-dsl

How to configure the processResources task in a Gradle Kotlin build


I have the following in a groovy-based build script. How do I do the same in a kotlin-based script?

processResources {

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

}

Solution

  • I think task should look like:

    Edit: According this comment in gradle/kotlin-dsl repository. Task configuration should work this way:

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

    Which is pretty ugly. So i suggest following utility function for this purpose, until one upstream done:

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