Gradle es un sistema de automatización para la construcción de paquetes de propósito general, esta basado en Groovy y Kotlin.
Soporta la descarga automática y configuración de dependencias y librerías.
Proyectos y tareas
Cada proyecto se conforma de procesos o tareas que representan una pieza de trabajo en el ciclo de ejecución de un proyecto, Gradle se encarga de esto.
build.gradle
El archivo principal es build.gradle, este archivo define proyectos y tareas. La estructura base de un proyecto Java es:
Debemos agregar las variables de entorno GRADLE_HOME con el valor de la ruta donde descomprimimos Gradle.
En la variable Path debemos agregar la ruta de la carpeta bin de Gradle. %GRADLE_HOME%\bin
Abrimos la terminal y ejecutamos el comando `gradle -v
Manejo de plug-ins
Gradle utiliza plug-ins para extender su funcionalidad estos añaden tareas, uno que nos interesa bastante es el plug-in java, este añade tareas para compilar, correr test y crear archivos JAR.
Para agregar un plug-in agregamos la linea apply plugin: 'nombre' dentro del archivo build.gradle
Repositorios y Dependencias
Podemos manejar dependencias propias o de terceros, un repositorio es una ubicación donde gradle puede localizar los archivos JAR, un popular repositorio es Maven Central.
Nota: Todo respositorio que publiques en maven central debe contener un Group Id (group), un Artifact Id (name) y una Version (version)
repositories {mavenCentral()}
Podemos agregar repositorios desde una url especifica
No me gustó esta guía. Tiene algunos errores de ortografía, mala redacción y no hay orden en la explicación lo cual genera muchas confusiones al momento de leerlo.
Considero que es importante resaltar antes las diferencias de Maven y Gradle, antes de empezar con la instalación y creación de un proyecto, así el estudiante tendrá claro que son temas independientes.
1. Instalar Gradle en Linux
Instalar Java. Verificar las variables de entorno. echo $JAVA_HOME echo $PATH
Descargar Gradle.
Extraer el archivo en Descargas, ejecutar en la terminal y añadir al final del archivo… sudo mv ~/Downloads/gradle-3.3 /opt sudo gedit /etc/bash.bashrc
/*
* This build file was generated by the Gradle 'init' task.
*
* This generated file contains a sample Java project to get you started.
* For more details take a look at the Java Quickstart chapter in the Gradle
* user guide available at https://docs.gradle.org/3.3/userguide/tutorial_java_projects.html
*/// Apply the java plugin to add support for Javaapply plugin:'java'// In this section you declare where to find the dependencies of your projectrepositories {// Use jcenter for resolving your dependencies.// You can declare any Maven/Ivy/file repository here.jcenter()}dependencies {// The production code uses Guava compile 'com.google.guava:guava:20.0'// Use JUnit test framework testCompile 'junit:junit:4.12'}
Estructura de archivos de Maven
Estructura de archivos de Gradle
Cual es la diferencia entre Maven y Gradle?
Puedes consultar este comparativo realizado en la página oficial de Gradle:
Maven vs Gradle Feature Comparasion
Un análisis más imparcial es el siguiente.
Maven vs Gradle – One Year Later
Jejeje cualquiera puede poner enlaces que te hacen tener aún mas dudas. Te las resumo. Cómo menciono el profesor del curso, Oscar Bernal ambos son formas de construir nuestro proyecto y manejar dependencias.
Si seguiste las dos guías (tanto de Maven como de Gradle) te darás cuenta que Maven utiliza la configuración del proyecto a través de un xml llamado pom.xml, mientras que Gradle maneja un JSON llamado build.gradle.
Ambos utilizan líneas de comandos (o a través de sus IDEs) la creación de nuestro proyecto, su estructura y ejecución de pruebas, al igual que la creación del archivo de despliegue (ya sea un WAR, un JAR, etc).
Ya radica en cuál desees trabajar, en cuanto a si uno maneja plugins, el otro maneja un repositorio de proyectos, etc. Ya es tarea revisar en detalle como trabaja cada uno o que tan compleja es al momento de corregir bugs.
Ten presente lo siguiente. Primero fue Apache Ant, luego Apache Maven y luego Gradle. Las tres cumplen la misma función, la forma en compilar y estructurar un proyecto.
Documentación más clara, siempre la base.
Alguien podria explicarme con mas detalle esta linea?
" Para agregar un plug-in agregamos la linea apply plugin: 'nombre' dentro del archivo build.gradle"
Bueno busque ese archivo en la ruta donde descomprimi gradle y hay decenas de esos archivos.
tienes que crear el archivo gradle.build y desde ahi le agregas la linea del plugin, no tienes que buscar dentro de los archivos de gradle, creas una carpeta para crear un proyecto nuevo de gradle y ahi le pruebas…
Yo te endiendo. El problema radica es que está muy mal explicado esta guía de Gradle. O más bien, está desorganizada y esto genera confunsiones.
El archivo build.gradle se genera cuando vas a crear un proyecto nuevo. Este se genera cuando creas una carpeta, por ejemplo, de nombre proyecto_gradle y en la consola, ubicandote en la carpeta escribes el siguiente comando
gradle init --type java-library
Este creará la siguiente estructura de archivos para tu proyecto:
Cuando revisas el archivo build.gradle tiene el siguiente código:
/*
* This build file was generated by the Gradle 'init' task.
*
* This generated file contains a sample Java project to get you started.
* For more details take a look at the Java Quickstart chapter in the Gradle
* user guide available at https://docs.gradle.org/3.3/userguide/tutorial_java_projects.html
*/// Apply the java plugin to add support for Javaapply plugin:'java'// In this section you declare where to find the dependencies of your projectrepositories {// Use jcenter for resolving your dependencies.// You can declare any Maven/Ivy/file repository here.jcenter()}dependencies {// The production code uses Guava compile 'com.google.guava:guava:20.0'// Use JUnit test framework testCompile 'junit:junit:4.12'}
Y la línea que preguntas, apply plugin: 'nombre’ lo que hace es añadir un plugin al proyecto, en este caso, el de java.
Cuando ejecuto gradle build, me sale esto:
assertTrue(“someLibraryMethod should return ‘true’”, classUnderTest.someLibraryMethod());
^
symbol: method assertTrue(String,boolean)
location: class LibraryTest
4 errors
:compileTestJava FAILED
FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ‘:compileTestJava’.
Compilation failed; see the compiler error output for details.
Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Alguien sabe de esto?
Gracias!!
¿Como tienes tu archivo build.gradle?
Recuerda seguir el siguiente orden.
Crear una carpeta para tu proyecto. Ejem: proyecto_gradle.
Ubicarte en la carpeta desde la consola.
Crear la estructura del proyecto. gradle init --type java-library
Limpiar los build anteriores. gradle clean
Compilar el código y generar nuestros .class gradle assemble
Generar el archivo JAR, lo cual ejecuta hace el test antes. gradle build
yo uso Mac, he tratado de seguir todo pero parece que alguna cosas son diferentes, me marca el siguiente error al ejecutar esta linea: gradle init --type java-library
:wrapper FAILED
FAILURE: Build failed with an exception.
What went wrong:
Some problems were found with the configuration of task ‘:wrapper’.
Cannot write to file ‘/usr/local/bin/gradle/wrapper/gradle-wrapper.properties’ specified for property ‘propertiesFile’, as ancestor ‘/usr/local/bin/gradle’ is not a directory.
Cannot write to file ‘/usr/local/bin/gradle/wrapper/gradle-wrapper.jar’ specified for property ‘jarFile’, as ancestor ‘/usr/local/bin/gradle’ is not a directory.
Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.