Gradle
Gradle | ||
---|---|---|
Información general | ||
Tipo de programa | build system | |
Desarrollador | Hans Dockter, Adam Murdoch, Szczepan Faber, Peter Niederwieser, Luke Daley, Rene Gröschke, Daz DeBoer, Steve Appling | |
Lanzamiento inicial | 2007[1] | |
Licencia | Licencia Apache 2.0 | |
Información técnica | ||
Programado en | Java, Groovy y Kotlin | |
Plataformas admitidas | máquina virtual Java | |
Versiones | ||
Última versión estable | 8.11.0 (info) ( 11 de noviembre de 2024 (6 días)) | |
Enlaces | ||
Gradle es un sistema de automatización de construcción de código de software que construye sobre los conceptos de Apache Ant y Apache Maven e introduce un lenguaje específico del dominio (DSL) basado en Groovy en vez de la forma XML utilizada por Apache Maven para declarar la configuración de proyecto.[2] Gradle utiliza un grafo acíclico dirigido ("DAG") para determinar el orden en el que las tareas pueden ser ejecutadas.
Gradle fue diseñado para construcciones multi-proyecto las cuales pueden crecer para ser bastante grandes, y da apoyo a construcciones incrementales determinando inteligentemente qué partes del árbol de construcción están actualizadas, de modo que cualquier tarea dependiente a aquellas partes no necesitarán ser reejecutada.
Los plugins iniciales están principalmente centrados en el desarrollo y despliegue en Java, Groovy y Scala, pero existen más lenguajes y workflows de proyecto en el roadmap.[3]
Ejemplo de proyecto Java
[editar]Considera el caso donde la estructura de directorios Maven es usada para las fuentes utilizada para los recursos y el código fuente Java. Estos directorios son: src/main/java, src/main/resources, src/test/java y src/test/resources.
build.gradle
apply plugin: 'java'
Ejecutar gradle build dará el siguiente resultado
> gradle build
:compileJava
:processResources
:classes
:jar
:assemble
:compileTestJava
:processTestResources
:testClasses
:test
:check
:build
BUILD SUCCESSFUL
El plugin de Java emula muchos de los ciclos de vida Maven esperados como tareas en el grafo acíclico dirigido de dependencias para las entradas y salidas de cada tarea. Para este caso sencillo, la tarea de build depende de las salidas de las tareas check y assemble. Así mismo, check depende de test, y assemble depende de jar.
Para proyectos que no siguen las convenciones Maven, Gradle permite que la estructura de directorios sea configurada. El ejemplo siguiente podría ser usado en un proyecto que contiene código fuente en src/java en lugar de src/main/java (que es la convención dictada por Maven).
build.gradle
apply plugin: 'java'
sourceSets.main.java.srcDirs = ['src/java']
Ejemplo de migración a Ant
[editar]Gradle tiene una integración muy buena con Ant, e incluso trata archivos de construcción de Ant como scripts que pueden ser directamente importados durante la construcción. El ejemplo debajo mostrado muestra un simple target Ant incorporado como tarea Gradle.
build.xml
<project>
<target name="ant.target">
<echo message="Running ant.target!"/>
</target>
</project>
build.gradle
ant.importBuild 'build.xml'
Ejecutar gradle ant.target resultará en
> gradle ant.target
:ant.target
[ant:echo] Running ant.target!
BUILD SUCCESSFUL
Referencias
[editar]- ↑ «https://gradle.org/» (en inglés). gradle.org. 18 de febrero de 2019.
- ↑ «Getting Started With Gradle». Petri Kainulainen. Consultado el 26 de marzo de 2016.
- ↑ «Getting Started · Building Java Projects with Gradle». Consultado el 26 de marzo de 2016.
Bibliografía
[editar]- Berglund, Tim; McCullough, Matthew (julio de 2011). Building and Testing with Gradle. Foreword by Hans Dockter (First edición). O'Reilly Media. p. 116. ISBN 978-1-4493-0463-8.
- Ikkink, Hubert (noviembre de 2012). Gradle Effective Implementation Guide (First edición). Packt Publishing. p. 382. ISBN 978-1849518109.
- Berglund, Tim; McCullough, Matthew (mayo de 2013). Gradle DSLs (First edición). O'Reilly Media. pp. 50 est. ISBN 978-1-4493-0467-6.
- Muschko, Benjamin (Fall 2013). Gradle In Action (First edición). Manning Publications. p. 390. ISBN 9781617291302.