Cómo configurar la tarea processResources en una compilation de Gradle Kotlin
Tengo lo siguiente en una secuencia de commands de construcción basada en Groovy. ¿Cómo hago lo mismo en un script basado en kotlin?
processResources { filesMatching('application.properties'){ expand(project.properties) } }
- método getter arrojando StackOverflowError
- La vista de text de IlegalStateException no puede ser nula con Kotlin
- DBFlow: datos de consulta de la columna especificada
- Objectbox: cómo inicializar la relación ToMany <> en kotlin
- Quiero detectar si una class JVM es una class Kotlin o no
- Sugerencias personalizadas en SearchView en el menu
- Determinando un pivote de ScaleAnimation
- El operador igual no se puede aplicar entre variable primitiva y caja
- Java Wildcard-types vs Kotlin Star-projection
- Autocompletado de IntelliJ para files de kotlin de script gradle incluidos
- Crea una vista arbitraria
- Anular setter para la variable definida en el constructor pnetworkingeterminado
- Invocar sobrecarga de operador y operador en Kotlin
Creo que la tarea debería verse así:
Editar : Según este comentario en el repository gradle / kotlin-dsl . La configuration de la tarea debería funcionar de esta manera:
import org.gradle.language.jvm.tasks.ProcessResources apply { plugin("java") } (tasks.getByName("processResources") as ProcessResources).apply { filesMatching("application.properties") { expand(project.properties) } }
Lo cual es bastante feo Así que sugiero seguir la function de utilidad para este propósito, hasta que se realice un flujo ascendente:
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() }
Con las actualizaciones de las API en la versión más nueva de Kotlin DSL y Gradle, puede hacer algo como:
import org.gradle.language.jvm.tasks.ProcessResources plugins { java } tasks { "processResources"(ProcessResources::class) { filesMatching("application.properties") { expand(project.properties) } } }
Y también:
val processResources by tasks.getting(ProcessResources::class) { filesMatching("application.properties") { expand(project.properties) } }