Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Docente: M.A. Alex Pacheco Moya Tutorial de Gradle JAVA CONTENIDO 1. La guía definitiva 2. Visión general 3. Estructura del proyecto 4. Menú Contextual 5. Tareas personalizadas S10 M.A. Alex Pacheco Pagina #2 Instituto de Educación Superior Privado El Buen Pastor Tutorial Gradle M.A. Alex Pacheco Pagina #3 Instituto de Educación Superior Privado El Buen Pastor 1. La guía definitiva de Gradle para NetBeans IDE ¡Gradle es una herramienta de construcción como Ant y Maven solo que mucho, mucho mejor! Gradle es una herramienta de compilación como Ant y Maven (solo que es mejor :)). Si aún no conoce Gradle, debe visitar http://www.gradle.org, ya que tienen una gran cantidad de (buena) documentación. 2. Visión general El complemento (Plugin) se basa en gran medida en la API de herramientas de Gradle. Esta API de herramientas se usa para descubrir la estructura de su proyecto y también se usa para ejecutar tareas. En ambos casos, la API de herramientas se basa en los servicios del llamado demonio Gradle. El demonio Gradle es un proceso Java en segundo plano que la API de herramientas inicia automáticamente si no se está ejecutando. Una vez iniciado, un daemon de Gradle vivirá durante 3 horas de forma predeterminada (y no puede ajustar el valor predeterminado en la API de herramientas). Lo que es relevante para usted es que este demonio no es realmente un proceso ligero (por defecto usa -Xmx1024m). Sin embargo, es posible generar más demonios sin darse cuenta: si el demonio está actualmente ocupado (ejecutando una de sus tareas o cargando un modelo para el complemento) y usted intenta ejecutar una tarea, se generará un nuevo demonio y permanecerá con usted durante 3 horas (a menos que elimine a la fuerza el proceso daemon, que es un proceso java). Además, si ajusta los argumentos de JVM, Gradle podría generar un nuevo demonio simplemente porque el que se está ejecutando se inició con diferentes argumentos (no lo hará si considera que sus argumentos están bien con el demonio que se está ejecutando actualmente). El complemento hará todo lo posible para no ejecutar tareas simultáneamente si no es necesario, pero de todos modos debe tener en cuenta que el demonio Gradle se ejecuta en segundo plano incluso después de cerrar NetBeans. 3. Project Structure La estructura del proyecto del proyecto abierto (en la ventana "Proyectos") debe ser similar a los proyectos Java habituales (tenga en cuenta que este complemento solo admite proyectos basados en Java). Algo que podría ver es que si el proyecto que abrió contiene subproyectos (por ejemplo, ha abierto el proyecto raíz), tendrá "Subproyectos". El nodo "Subproyectos" se puede desplegar para explorar todos los subproyectos y abrirlos desde aquí si lo desea. Personalmente, normalmente abro el proyecto raíz y lo uso para abrir los subproyectos que necesito actualmente. El nodo "Crear scripts" también es algo especial para este complemento: contiene los archivos .gradle que se encuentran en el directorio del proyecto (no busca recursivamente, si necesita otros archivos, debe usar la pestaña "Archivos"). Otros nodos son lo que sugiere su nombre. M.A. Alex Pacheco Pagina #4 Instituto de Educación Superior Privado El Buen Pastor Una vez que haya tenido suficiente de la pestaña "Proyectos" o vea archivos con errores a pesar de que deberían compilarse, diríjase a las propiedades del proyecto. Las propiedades del proyecto se pueden abrir desde el menú contextual del nodo del proyecto: aquí seleccione "Propiedades". Hay muchas cosas que puede configurar aquí, pero ante todo, debe saber cómo se almacenan estas propiedades: todos los subproyectos en un proyecto Gradle comparten las mismas propiedades. Esta fue una decisión de diseño para evitar demasiadas configuraciones (probablemente innecesarias). El perfil predeterminado se almacena junto al archivo "settings.gradle" del proyecto (si no hay ninguno, entonces en el directorio del proyecto) y se denomina ".nb-gradle-properties". Este archivo fue diseñado para que, por lo general, pueda enviarlo de manera segura a su VCS (otros IDE simplemente lo ignorarán). Hay otro directorio ubicado junto a ".nb-gradle-properties" llamado ".nb-gradle". Esto podría almacenar archivos que quizás no desee enviar a su VCS. Aunque actualmente, solo los perfiles adicionales que cree se almacenarán aquí. Entonces, al comprender esto, debe ajustar las propiedades del proyecto. Esto incluye propiedades que este complemento podría no ser capaz de deducir del script de compilación y muchas otras. Para obtener información detallada sobre las propiedades, lea la guía más detallada. 4. Menú contextual del Proyecto M.A. Alex Pacheco Pagina #5 Instituto de Educación Superior Privado El Buen Pastor Puede encontrar los comandos de compilación habituales aquí (por ejemplo: compilar, probar). Lo que es importante saber es que cada comando de compilación está asignado a un comando Gradle específico y cada uno de ellos es completamente personalizable. Debe leer la guía de comandos de compilación. Lo que es realmente importante saber aquí es que el complemento no reconocerá los cambios en el script de compilación automáticamente. Si ha cambiado el script de compilación del proyecto, debe hacer clic en "Recargar proyecto" en el menú contextual. Tenga en cuenta que no es necesario volver a cargar un proyecto después de cada cambio en el script de compilación. Por lo general, solo necesita volver a cargar si ha ajustado las dependencias del proyecto (recargar el proyecto no tiene ningún efecto en la ejecución de tareas). El complemento también hará todo lo posible para recargar proyectos según este proyecto (y están en la misma compilación de proyectos múltiples) y las dependencias. En realidad, tal como está implementado actualmente, el complemento recarga cada proyecto en la misma compilación de varios proyectos. 5. Tareas personalizadas Puede ejecutar y guardar tareas que tiene la intención de usar con frecuencia. Estas tareas se pueden agregar al elemento "Tareas personalizadas" del menú contextual del proyecto. Las tareas personalizadas se almacenan con las propiedades del proyecto (en el mismo archivo), por lo que, al igual que con otras propiedades, se comparten entre los proyectos de una compilación de varios proyectos. Lea la guía más detallada de tareas personalizadas. 6. Cinco cosas que debes saber sobre Gradle Gradle es una herramienta de construcción flexible y poderosa que fácilmente puede parecer intimidante cuando comienza por primera vez. Sin embargo, comprender los siguientes principios básicos hará que Gradle sea mucho más accesible y te volverás experto con la herramienta antes de que te des cuenta. 1. Gradle es una herramienta de compilación de uso general Gradle te permite construir cualquier software, porque hace pocas suposiciones sobre lo que estás tratando de construir o cómo se debe hacer. La restricción más notable es que la administración de dependencias actualmente solo admite repositorios y sistemas de archivos compatibles con Maven e Ivy. M.A. Alex Pacheco Pagina #6 Instituto de Educación Superior Privado El Buen Pastor Esto no significa que tengas que trabajar mucho para crear una compilación. Gradle facilita la creación de tipos comunes de proyectos, por ejemplo, bibliotecas de Java, al agregar una capa de convenciones y funcionalidades prediseñadas a través de complementos. Incluso puede crear y publicar complementos personalizados para encapsular sus propias convenciones y crear funcionalidad. 2. El modelo central se basa en tareas Gradle modela sus compilaciones como gráficos acíclicos dirigidos (DAG) de tareas (unidades de trabajo). Lo que esto significa es que una compilación esencialmente configuraun conjunto de tareas y las conecta, en función de sus dependencias, para crear ese DAG. Una vez que se ha creado el gráfico de tareas, Gradle determina qué tareas deben ejecutarse en qué orden y luego procede a ejecutarlas. Este diagrama muestra dos gráficos de tareas de ejemplo, uno abstracto y otro concreto, con las dependencias entre las tareas representadas como flechas: Figura 1. Dos ejemplos de gráficos de tareas de Gradle Figura 1. Dos ejemplos de gráficos de tareas de Gradle Casi cualquier proceso de compilación se puede modelar como un gráfico de tareas de esta manera, que es una de las razones por las que Gradle es tan flexible. Y ese gráfico de tareas se puede definir mediante complementos y sus propios scripts de compilación, con tareas vinculadas entre sí a través del mecanismo de dependencia de tareas. M.A. Alex Pacheco Pagina #7 Instituto de Educación Superior Privado El Buen Pastor Las tareas en sí consisten en: • Acciones: piezas de trabajo que hacen algo, como copiar archivos o compilar código fuente • Entradas: valores, archivos y directorios que las acciones usan o en los que operan • Salidas: archivos y directorios que las acciones modifican o generan De hecho, todo lo anterior es opcional dependiendo de lo que deba hacer la tarea. Algunas tareas, como las tareas estándar del ciclo de vida, ni siquiera tienen acciones. Simplemente agregan múltiples tareas juntas como una conveniencia. 3. Gradle tiene varias fases de construcción fijas Es importante comprender que Gradle evalúa y ejecuta scripts de compilación en tres fases: 1. Inicialización Configura el entorno para la compilación y determina qué proyectos participarán en él. 2. Configuración Construye y configura el gráfico de tareas para la compilación y luego determina qué tareas deben ejecutarse y en qué orden, según la tarea que el usuario desea ejecutar. 3. Ejecución Ejecuta las tareas seleccionadas al final de la fase de configuración. Estas fases forman el ciclo de vida de compilación de Gradle. Los scripts de compilación bien diseñados consisten principalmente en una configuración declarativa en lugar de una lógica imperativa. Esa configuración es comprensiblemente evaluada durante la fase de configuración. Aun así, muchas de estas compilaciones también tienen acciones de tareas, por ejemplo, a través de los bloques doLast {} y doFirst {}, que se evalúan durante la fase de ejecución. Esto es importante porque el código evaluado durante la fase de configuración no verá los cambios que ocurren durante la fase de ejecución. Otro aspecto importante de la fase de configuración es que todo lo involucrado en ella se evalúa cada vez que se ejecuta la compilación. Por eso es una buena práctica evitar trabajos costosos durante la fase de configuración. Los escaneos de compilación pueden ayudarlo a identificar tales puntos de acceso, entre otras cosas. M.A. Alex Pacheco Pagina #8 Instituto de Educación Superior Privado El Buen Pastor 4. Gradle es extensible en más de un sentido Sería genial si pudieras construir tu proyecto usando solo la lógica de construcción incluida con Gradle, pero eso rara vez es posible. La mayoría de las compilaciones tienen algunos requisitos especiales que significan que debe agregar una lógica de compilación personalizada. Gradle proporciona varios mecanismos que le permiten extenderlo, tales como: Tipos de tareas personalizadas. Cuando desee que la compilación realice un trabajo que una tarea existente no puede realizar, simplemente puede escribir su propio tipo de tarea. Por lo general, es mejor colocar el archivo de origen para un tipo de tarea personalizada en el directorio buildSrc o en un complemento empaquetado. Luego, puede usar el tipo de tarea personalizada como cualquiera de las proporcionadas por Gradle. Acciones de tareas personalizadas. Puede adjuntar una lógica de compilación personalizada que se ejecute antes o después de una tarea a través de los métodos Task.doFirst() y Task.doLast(). Propiedades adicionales en proyectos y tareas. Esto le permite agregar sus propias propiedades a un proyecto o tarea que luego puede usar desde sus propias acciones personalizadas o cualquier otra lógica de compilación. Incluso se pueden aplicar propiedades adicionales a tareas que usted no crea explícitamente, como las creadas por los complementos principales de Gradle. Convenciones personalizadas. Las convenciones son una forma poderosa de simplificar las compilaciones para que los usuarios puedan entenderlas y usarlas más fácilmente. Esto se puede ver con compilaciones que usan estructuras de proyecto estándar y convenciones de nomenclatura, como las compilaciones de Java. Puede escribir sus propios complementos que proporcionen convenciones; solo necesitan configurar valores predeterminados para los aspectos relevantes de una compilación. Un modelo personalizado. Gradle le permite introducir nuevos conceptos en una compilación más allá de las tareas, los archivos y las configuraciones de dependencia. Puede ver esto con la mayoría de los complementos de idioma, que agregan el concepto de conjuntos de fuentes a una compilación. El modelado apropiado de un proceso de compilación puede mejorar en gran medida la facilidad de uso y la eficiencia de una compilación. M.A. Alex Pacheco Pagina #9 Instituto de Educación Superior Privado El Buen Pastor 5. Los scripts de compilación funcionan con una API Es fácil ver los scripts de compilación de Gradle como código ejecutable, porque eso es lo que son. Pero ese es un detalle de implementación: los scripts de compilación bien diseñados describen qué pasos se necesitan para compilar el software, no cómo esos pasos deberían hacer el trabajo. Ese es un trabajo para tipos de tareas personalizadas y complementos. Sin embargo, hay un área en la que es útil ver un script de compilación como código ejecutable: comprender cómo la sintaxis del script de compilación se asigna a la API de Gradle. La documentación de la API, formada por Groovy DSL Reference y Javadocs, enumera métodos y propiedades, y hace referencia a cierres y acciones. ¿Qué significa esto en el contexto de un script de compilación? Consulte Groovy Build Script Primer para conocer la respuesta a esa pregunta y poder hacer un uso eficaz de la documentación de la API. ---------------------------------------------------- Referencia: • The Definitive Gradle Guide for NetBeans IDE https://dzone.com/articles/definitive-gradle-guide-for-netbeans • What is Gradle? https://docs.gradle.org/current/userguide/what_is_gradle.html https://dzone.com/articles/definitive-gradle-guide-for-netbeans https://docs.gradle.org/current/userguide/what_is_gradle.html
Compartir