Dependencia entre tareas

Cómo organizar dependencias entre tareas por medio de dependsBy para hacer que una tarea se ejecute antes que otra y para controlar la forma en la que fluyen tareas.

Este curso ha sido marcado como anticuado y no está siendo revisado de forma activa. Es posible que la información pueda estar desactualizada o que los enlaces se hayan roto.

Cuando trabajamos con Gradle, uno de los conceptos fundamentales para organizar nuestras tareas es la dependencia entre ellas. Esto nos permite asegurar que ciertas tareas se ejecuten antes que otras, siguiendo un orden lógico que evita errores y facilita flujos de trabajo claros y eficientes.

Imaginemos que tenemos tareas atómicas, es decir, tareas que hacen una sola cosa: una para compilar el código, otra para ejecutar pruebas unitarias, otra para generar documentación, y otra para empaquetar todo en un archivo zip. También podríamos tener una tarea para subir ese paquete a un servidor. No tendría sentido intentar subir el paquete antes de haberlo compilado, porque simplemente no existiría nada que subir. Aquí es donde las dependencias entre tareas juegan un papel crucial.

En Gradle, podemos definir estas dependencias de forma sencilla, creando una especie de grafo acíclico donde una tarea depende de la ejecución previa de otra. Por ejemplo, si queremos que la tarea C solo se ejecute después de que la tarea B haya terminado, y que la tarea B dependa a su vez de la tarea A, entonces para ejecutar C se ejecutarán primero A y B en ese orden.

Para ilustrar esto, podemos definir tres tareas simples que imprimen mensajes indicando cuál se está ejecutando:

task A {
    doLast {
        println 'Estoy ejecutando la tarea A'
    }
}

task B {
    doLast {
        println 'Estoy ejecutando la tarea B'
    }
}

task C {
    doLast {
        println 'Estoy ejecutando la tarea C'
    }
}

Si ejecutamos la tarea C tal cual, solo veremos el mensaje de la tarea C. Pero para establecer las dependencias, podemos usar la propiedad dependsOn dentro de la definición de la tarea C, indicando que depende de la tarea B, y a su vez la tarea B depende de la tarea A. Así:

task A {
    doLast {
        println 'Estoy ejecutando la tarea A'
    }
}

task B {
    dependsOn A
    doLast {
        println 'Estoy ejecutando la tarea B'
    }
}

task C {
    dependsOn B
    doLast {
        println 'Estoy ejecutando la tarea C'
    }
}

Ahora, si ejecutamos la tarea C, Gradle primero ejecutará la tarea A, luego la B, y finalmente la C, respetando el orden de dependencias. Esto es muy útil porque no tenemos que preocuparnos por ejecutar manualmente cada tarea en el orden correcto; Gradle se encarga de ello.

Otra forma de definir dependencias es usando la sintaxis de asignación directa a la propiedad dependsOn fuera del bloque de la tarea, aunque la forma recomendada es dentro del bloque para mantener el código organizado.

Este mecanismo de dependencias es el que permite que, cuando ejecutamos comandos como gradle build en un proyecto Java, se ejecuten automáticamente muchas tareas en el orden correcto, como compilar, ejecutar pruebas, empaquetar, etc. Cada tarea puede ser atómica y especializada, y las dependencias aseguran que se ejecuten en la secuencia adecuada.

En definitiva, gestionar dependencias entre tareas en Gradle es una forma poderosa de construir flujos de trabajo claros y eficientes, donde cada tarea cumple su función y se ejecuta en el momento justo. Esto nos ayuda a mantener nuestros proyectos organizados y a evitar errores derivados de ejecutar tareas en un orden incorrecto.

Lista de reproducción
  1. 1
    Instalar Gradle
    7 minutos
  2. 2
    Creando las primeras tareas
    7 minutos
  3. 3
    Más sobre tareas
    8 minutos
  4. 4
    Cómo usar Gradle con Java
    11 minutos
  5. 5
    Creando aplicaciones con Application
    3 minutos
  6. 6
    Dependencia entre tareas
    5 minutos
  7. 7
    Más métodos de las tareas
    9 minutos
  8. 8
    Ejecución condicional con onlyIf
    5 minutos
  9. 9
    finalizedBy
    2 minutos
  10. 10
    Tareas base de Gradle
    3 minutos
  11. 11
    Tarea Copy
    6 minutos
  12. 12
    Tarea Exec
    6 minutos
  13. 13
    Tarea Zip
    5 minutos
  14. 14
    Importar en IntelliJ IDEA
    6 minutos
  15. 15
    Importar en Eclipse
    5 minutos
  16. 16
    Importar en NetBeans
    4 minutos
  17. 17
    Dependencias con Maven
    11 minutos
  18. 18
    Qué aprender ahora
    5 minutos
  19. 19
    ¿Qué es Gradle?
    6 minutos