es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tratando de entender el archivo gradle.

Estoy intentando cambiar un archivo build.gradle de un proyecto existente que me entregaron. Soy nuevo en gradle y groovy, por lo que estoy intentando decodificar lo que está haciendo exactamente. La documentación de gradle y groovy no me está ayudando mucho. Aquí hay un ejemplo:

apply plugin: "java"
apply plugin: 'idea'
apply plugin: 'war'
apply plugin: 'org.springframework.boot'
apply plugin: 'org.flywaydb.flyway'
apply plugin: "net.saliman.cobertura"
apply plugin: 'org.sonarqube'
apply plugin: 'org.owasp.dependencycheck'
apply plugin: 'maven'
apply plugin: 'maven-publish'
apply plugin: 'io.spring.dependency-management'

// mucho código aquí....

task('devRun') {
    doLast {    
        bootRun {
            systemProperty "spring.profiles.active", "local, dev"
            if (System.getenv('DEBUG') == 'true') {
                jvmArgs '-Xdebug',
                        '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5081'
            }
        }
    }
}

Para mí, parece que hay varias definiciones de cierre anidadas, lo que significa que task es el cierre exterior, doLast es el cierre interno y bootRun es un cierre aún más interno. ¿Pero no son los cierres groovy de la forma {declaración...} y no etiqueta {declaración...}? Además, ¿no son todas estas palabras clave o tareas predefinidas de otros complementos? Si ese es el caso, ¿qué significa decir doLast {declaración...} o bootRun {declaración...}? ¿Esto está sobrescribiendo doLast predefinido? y lo mismo para bootRun. No estoy encontrando ningún ejemplo en la documentación que se parezca exactamente a este fragmento de código. ¿Podría alguien explicar qué reglas de sintaxis de groovy se aplican aquí?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, el fragmento de código está definiendo varios closures anidados. task, doLast y bootRun son palabras clave o tareas predefinidas de otros plugins.

    En Gradle, task es un método que crea un objeto de tarea. doLast es un método del objeto de tarea que define la acción que se realizará cuando se ejecute la tarea. bootRun es una tarea proporcionada por el plugin org.springframework.boot, que permite ejecutar la aplicación Spring Boot.

    En Groovy, los closures tienen la forma de {afirmación...} o etiqueta {afirmación...}. Sin embargo, en el contexto de Gradle, el método task y otros métodos específicos de Gradle aceptan closures con una etiqueta en lugar de utilizar llaves.

    Por lo tanto, doLast {afirmación...} es simplemente una forma abreviada de doLast { -> afirmación...}, donde -> es la sintaxis de Groovy para definir un closure sin argumentos. De manera similar, bootRun {afirmación...} es una forma abreviada de bootRun { -> afirmación...}.

    El fragmento de código está definiendo una tarea Gradle llamada devRun, que configura la tarea bootRun del plugin org.springframework.boot para establecer la propiedad del sistema spring.profiles.active en local, dev. Si la variable de entorno DEBUG se establece en true, también agrega algunos argumentos JVM para habilitar la depuración remota.

    En general, el fragmento de código es un ejemplo de cómo se pueden personalizar y configurar las tareas de Gradle utilizando la sintaxis de closure.

Comments are closed.