Gradle
es un sistema de automatizacion de construccion de codigo de software que construye sobre los conceptos de
Apache Ant
y
Apache Maven
e introduce un
lenguaje especifico del dominio (DSL)
basado en
Groovy
en vez de la forma
XML
utilizada por
Apache Maven
para declarar la configuracion de proyecto.
[
2
]
Gradle utiliza un
grafo aciclico dirigido
("DAG") para determinar el orden en el que las tareas pueden ser ejecutadas.
Gradle fue disenado para construcciones multi-proyecto las cuales pueden crecer para ser bastante grandes, y da apoyo a construcciones incrementales determinando inteligentemente que partes del arbol de construccion estan actualizadas, de modo que cualquier tarea dependiente a aquellas partes no necesitaran ser reejecutada.
Los plugins iniciales estan principalmente centrados en el desarrollo y despliegue en
Java
,
Groovy
y
Scala
, pero existen mas 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 codigo fuente Java. Estos directorios son: src/main/java, src/main/resources, src/test/java y src/test/resources.
build.gradle
Ejecutar
gradle build
dara 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 aciclico 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
. Asi 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 podria ser usado en un proyecto que contiene codigo fuente en src/java en lugar de src/main/java (que es la convencion dictada por Maven).
build.gradle
apply
plugin:
'java'
sourceSets
.
main
.
java
.
srcDirs
=
[
'src/java'
]
Ejemplo de migracion a Ant
[
editar
]
Gradle tiene una integracion muy buena con Ant, e incluso trata archivos de construccion de Ant como scripts que pueden ser directamente importados durante la construccion. 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
resultara en
> gradle ant.target
:ant.target
[ant:echo] Running ant.target!
BUILD SUCCESSFUL
Referencias
[
editar
]
Bibliografia
[
editar
]
Enlaces externos
[
editar
]