Tener un extracto de https://github.com/gradle/gradle/blob/master/build.gradle:configuración personalizada condicional para proyectos Gradle
ext {
isDevBuild = {
gradle.taskGraph.hasTask(developerBuild)
}
}
task developerBuild {
description = 'Builds distributions and runs pre-checkin checks'
group = 'build'
dependsOn testedDists
}
Cuando he usado este enfoque para crear una configuración personalizada en mi proyecto he descubierto que:
isDevBuild === true
es decir, que siempre es cierto porque la tarea 'developerBuild' está dentro de mi proyecto build.gradle, y por lo tanto en gráfico. Tienen un par de configuraciones "diferentes" (esCIBuild, isCommitBuild, isFinalReleaseBuild, ...) así que supongo que tengo algo mal aquí.
¿Alguien puede explicar cómo hacer que esta configuración sea condicional en función de algún parámetro externo?
Volviendo a la aserción del libro "Construyendo y Probando con Gradle": el conocimiento de Groovy no es más, es necesario empezar a trabajar con Gradle. Gracias por tu ayuda. Lo comprobaré más tarde hoy. –
No diría que es imprescindible para comenzar, pero es necesario implementar soluciones avanzadas como esta. (Una alternativa simple que requiere menos conocimiento de Groovy es cambiar entre diferentes configuraciones basadas en una propiedad del sistema). De nuevo, gran parte de este código podría escribirse en estilo Java (con clases internas anónimas y similares), o literalmente en Java si lo moví a un plugin. El verdadero desafío en este caso particular es comprender el lado Gradle de las cosas: la API del gráfico de tareas, la fase de configuración vs. ejecución, etc. –
Su solución funciona bien. Muchas gracias. Para la nota que pones en P.S. : No puedo llamar directamente a 'isDevBuild()' cuando ejecuto la creación de Gradle con 'ciBuild jar' por ejemplo (y no puedo usar ambas configuraciones al mismo tiempo) - aunque usted demostró que puedo llamar al cierre solo para fines educativos. –