CursosEmpresasBlogLiveConfPrecios

Guía de Gradle

Clase 7 de 23 • Curso de Java para APIs REST 2016

Contenido del curso

Este curso no es vigente

  • 1

    AVISO IMPORTANTE

    00:12 min

Bienvenidos

  • 2

    Frameworks y herramientas de Java

    03:55 min

Introducción a Java Enterprise Edition

  • 3
    Preguntas antes de la clase

    Preguntas antes de la clase

    58:12 min
  • 4
    Diferencia entre Java y Java Enterprise

    Diferencia entre Java y Java Enterprise

    07:52 min
  • 5
    Contenedores de una aplicación JEE

    Contenedores de una aplicación JEE

    02:08 min
  • 6

    Guía de Maven

    02:53 min
  • 7

    Guía de Gradle

    Viendo ahora
  • 8
    Configuración de proyecto usando Maven y Gradle

    Configuración de proyecto usando Maven y Gradle

    34:59 min
  • 9
    Tipos de aplicaciones Web con JEE: Presentation vs Services

    Tipos de aplicaciones Web con JEE: Presentation vs Services

    13:44 min
  • 10
    Java Servlets

    Java Servlets

    46:04 min
  • 11
    Preguntas y respuestas en clase

    Preguntas y respuestas en clase

    20:20 min

Spring Framework y creación de un servicio REST

  • 12
    Preguntas antes de la clase

    Preguntas antes de la clase

    49:43 min
  • 13
    Servicio REST con Java

    Servicio REST con Java

    25:50 min
  • 14
    Inyección de dependencias

    Inyección de dependencias

    41:40 min
  • 15
    MVC con Spring framework

    MVC con Spring framework

    30:43 min
  • 16
    Preguntas y respuestas en clase

    Preguntas y respuestas en clase

    14:17 min

Proyecto Spring MVC a producción y Java 8

  • 17
    Preguntas antes de la clase

    Preguntas antes de la clase

    49:59 min
  • 18
    Lambdas con Java 8

    Lambdas con Java 8

    22:48 min
  • 19
    Proyecto a producción con AWS ElasticBeanstalk

    Proyecto a producción con AWS ElasticBeanstalk

    58:50 min
  • 20
    Preguntas y respuestas en clase

    Preguntas y respuestas en clase

    17:48 min

Complementos del curso

  • 21
    Unit testing en Java

    Unit testing en Java

    08:59 min
  • 22
    JSPs y sus alternativas

    JSPs y sus alternativas

    06:56 min
  • 23
    Persistencia en Java con JPA y Hibernate

    Persistencia en Java con JPA y Hibernate

    00:00 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads

      Gradle

      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:

      apply plugin: 'java' repositories { jcenter() } dependencies { compile 'org.slf4j:slf4j-api:1.7.21' testCompile 'junit:junit:4.12' }

      Instalar Gradle

      1. Antes de instalar gradle necesitas tener JDK, asegurándonos que la variable JAVA_HOME esté definida.

      2. Descarga la ultima versión completa de Gradle

      download.png
      1. Debemos agregar las variables de entorno GRADLE_HOME con el valor de la ruta donde descomprimimos Gradle.
      download (1).png
      1. En la variable Path debemos agregar la ruta de la carpeta bin de Gradle. %GRADLE_HOME%\bin
      download (2).png
      1. Abrimos la terminal y ejecutamos el comando `gradle -v
      download (3).png

      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

      repositories { maven { url "http://repo.mycompany.com/maven2" } }

      Luego de definir los repositorios donde traeremos nuestras dependencias, debemos definir las dependencias del proyecto.

      dependencies { testCompile group: 'junit', name: 'junit', version: '4.+' }

      Tareas

      download (4).png

      Para listar las tareas que tiene gradle podemos ejecutar el comando gradle tasks

      También podemos crear nuestras tareas propias, dentro del archivo build.gradle escribe:

      task compileTarea << { System.out.println "compilando..." }

      En la consola podemos ejecutar gradle compileTarea de esta manera creaste tu primera tarea.

      Proyectos JAVA

      Como ya habíamos nombrado arriba, un extra fundamental es el Java Plugin, este nos añadira tareas para compilar, realizar test, pruebas.

      1. Generar estructura

      En la terminal ejecutamos el comando gradle init --type java-library

      download (5).png

      Esto nos genera la estructura de archivos para crear una librería de Java.

      download (6).png
      1. Limpiar dependencias

      Ejecutamos el comando gradle clean, esto limpiará builds anteriores.

      download (7).png
      1. Compilar código.

        Ejecutamos el comando gradle assemble compilamos el código y generamos los archivos .class

      download (8).png

      Nota: recuerda siempre que quiereas volver a compilar deberías ejecutar primero el comando gradle clean

      1. Generar archivo .jar
      download (9).png

      Ejecutamos el comando gradle build, esto compila, ejecuta test y genera nuestro paquete .jar

      IDEs

      Recuerda que cuando se utiliza un IDE todos estos procesos se pueden gestionar desde el, puedes consultar las guias oficiales.

      • Intellij
      • Netbeans
      • Eclipse
        Cesar David Ramírez Dimaté

        Cesar David Ramírez Dimaté

        student•
        hace 9 años

        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

        1. Instalar Java. Verificar las variables de entorno.
          echo $JAVA_HOME
          echo $PATH
        2. Descargar Gradle.
        3. 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
        export GRADLE_HOME=/opt/gradle-3.3 export PATH=$PATH:$GRADLE_HOME/bin
        1. Cerrar la sesión de usuario, volver a iniciar y ejecutar en la terminal
          gradle -v

        2. Crear un proyecto con Gradle.

        1. Crear una carpeta para tu proyecto. Ejem: proyecto_gradle.
        2. Ubicarte en la carpeta desde la terminal.
        3. Crear la estructura del proyecto.
          gradle init --type java-library
        4. Limpiar los build anteriores.
          gradle clean
        5. Compilar el código y generar nuestros .class
          gradle assemble
        6. Generar el archivo JAR, lo cual ejecuta hace el test antes.
          gradle build

        Si en Maven nuestro archivo principal de configuración es pom.xml, para Gradle es build.gradle con la estructura de un archivo JSON.

        pom.xml

        <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.proyecto</groupId> <artifactId>primer-proyecto</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>primer-proyecto</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>

        build.gradle

        /* * 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 Java apply plugin: 'java' // In this section you declare where to find the dependencies of your project repositories { // 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

        https://i.snag.gy/vDejRd.jpg

        Estructura de archivos de Gradle

        https://i.snag.gy/xiQq1h.jpg
        Wilson Castro Gil

        Wilson Castro Gil

        student•
        hace 9 años

        Cual es la diferencia entre Maven y Gradle?

          Jair Israel Avilés Eusebio

          Jair Israel Avilés Eusebio

          student•
          hace 9 años

          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

          Cesar David Ramírez Dimaté

          Cesar David Ramírez Dimaté

          student•
          hace 9 años

          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.

        Diego A de la Cruz Rojas

        Diego A de la Cruz Rojas

        student•
        hace 9 años

        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.

          Israel Sotomayor

          Israel Sotomayor

          student•
          hace 9 años

          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…

          Cesar David Ramírez Dimaté

          Cesar David Ramírez Dimaté

          student•
          hace 9 años

          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:

          https://i.snag.gy/hJYvuZ.jpg

          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 Java apply plugin: 'java' // In this section you declare where to find the dependencies of your project repositories { // 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.

        Carlos Javier Meilan

        Carlos Javier Meilan

        student•
        hace 9 años

        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!!

          Jair Israel Avilés Eusebio

          Jair Israel Avilés Eusebio

          student•
          hace 9 años

          ¿Como tienes tu archivo build.gradle?

          Cesar David Ramírez Dimaté

          Cesar David Ramírez Dimaté

          student•
          hace 9 años

          Recuerda seguir el siguiente orden.

          1. Crear una carpeta para tu proyecto. Ejem: proyecto_gradle.
          2. Ubicarte en la carpeta desde la consola.
          3. Crear la estructura del proyecto.
            gradle init --type java-library
          4. Limpiar los build anteriores.
            gradle clean
          5. Compilar el código y generar nuestros .class
            gradle assemble
          6. Generar el archivo JAR, lo cual ejecuta hace el test antes.
            gradle build
        Arnoldo  Rosales Reyes

        Arnoldo Rosales Reyes

        student•
        hace 9 años

        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.

        BUILD FAILED

        Total time: 0.958 secs
        Alguna idea?

          Ricardo Azpeitia P.

          Ricardo Azpeitia P.

          student•
          hace 9 años

          No tienes gradle instalado, instalalo con brew

          brew install gradle