Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Índice
● Automatización.
● Programación sin automatización.
● Ventajas de la Automatización.
● Herramientas de Gestión y Construcción de proyectos.
○ Introducción a Maven
○ Introducción a Gradle
● Buenas prácticas.
● Comparativa de herramientas.
● Conclusiones.
3
Automatización
Proceso mediante el cual una actividad o acción es realizada de forma
automática por una máquina o sistema.
Para automatizar un proceso es necesario tecnología que realice la actividad
prácticamente sin intervención de una persona. Se puede implementar en
prácticamente cualquier sector que tenga tareas repetitivas.
Entre las áreas más comunes están:
● Fabricación ● Tecnología
● Robótica ● Software en general
● Automóviles
4
2
Co
ns
is
te
n ci
a
en
lo
s
re
su
lta
do
s
3
M
ay
or
Ca
l
Ventajas de la Automatización
id
a d
4
Di
sm
in
uc
ió
n
de
co
st
os
5
6
Maven
Maven es una herramienta open-source, creada en 2001 con el objetivo de
simplificar los procesos de compilación y generación de ejecutables a partir del
código fuente de un programa automatizando estos dos puntos.
Antes de que Maven introdujera una interfaz común para hacer los builds del
software, cada proyecto solía tener a alguna persona dedicada exclusivamente
a configurar el proceso de construcción.
8
Pruebas de Integración
01 Validación (Validate) 05 (Integration-test)
01 Project
<project>
02 model Version
<modelVersion>4.0.0</modelVersion>
<groupId>com.hn.uth</groupId>
<artifactId>my-personal-app</artifactId>
03 Group Id
<version>1.0.0</version>
</project>
04 Artifact Id
05 Version
<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/maven-v4_0_0.xsd"> 11
<modelVersion>4.0.0</modelVersion>
<groupId>…</groupId>
<artifactId>…</artifactId>
<version>…</version>
<packaging>…</packaging>
<dependencies>…</dependencies> Elemento Básicos
<parent>…</parent>
<dependencyManagement>…</dependencyManagement>
<modules>…</modules>
<properties>…</properties>
<build>…</build>
<reporting>…</reporting>
Configuración de construcción
<name>…</name>
<description>…</description>
<url>…</url>
<inceptionYear>…</inceptionYear> Información del proyecto
<licenses>…</licenses>
<organization>…</organization>
<developers>…</developers>
<contributors>…</contributors>
<issueManagement>…</issueManagement>
<prerequisites>…</prerequisites>
<repositories>…</repositories>
<pluginRepositories>…</pluginRepositories> Configuración de Ambiente
<distributionManagement>…</distributionManagement>
<profiles>…</profiles>
</project>
12
Ventajas de Maven
• Convención sobre su
configuración.
• Compilaciones múltiples y
repetidas.
• Gestión, prueba y desarrollo de
sus complementos.
• Comprobación del estado de cada
construcción.
14
Gradle
Gradle es una herramienta de automatización de compilación de código
abierto, que obtuvo una rápida popularidad ya que fue diseñada
fundamentalmente para construir multiproyectos, utilizando conceptos
provenientes de Apache Maven.
Gradle mejora principalmente las siguientes funcionalidades de Maven:
• Lenguaje
• Gestión del ciclo de vida
15
mainClassName = 'hello.HelloWorld'
jar {
baseName = 'gs-gradle'
version = '0.1.0' Ensamblado de Jars
}
sourceCompatibility = 1.8
targetCompatibility = 1.8 Definición de compatibilidades del lenguaje
dependencies {
compile "joda-time:joda-time:2.2"
testCompile "junit:junit:4.12" Gestión de dependencias
}
17
Archivos Gradle
Settings.gradle build.gradle
dependencyResolutionManagement { plugins {
repositoriesMode.set(RepositoriesMode id 'com.android.application'
.FAIL_ON_PROJECT_REPOS)
}
repositories {
dependencies {
google()
implementation
mavenCentral() 'com.google.android.material:material:1.
4.0'
jcenter()
implementation
}
'androidx.constraintlayout:constraintlay
} out:2.1.0'
rootProject.name = "VotacionesHN" compileOnly
'com.github.pengrad:jdk9-deps:1.0'
include ':app'
}
18
Buenas prácticas
• Especificar siempre una versión de los plugins en Maven.
• Minimiza el número de dependencias SNAPSHOT o nightly build.
• Utiliza propiedades con total libertad.
• Configura suficiente memoria para la herramienta seleccionada.
• Especificar la versión de java a utilizar.
• Utilizar la estructura de archivos recomendada.
19
Maven vs Gradle
La gran diferencia entre estas herramientas es la sintaxis con la que se
escriben. Maven utiliza XML y Gradle Groovy. Ambas hacen las mismas
acciones, sin embargo, podemos decir que la implementación en Gradle es
más fácil de leer y mantener.
Eso se debe a que, a diferencia de XML, no utiliza tags para abrir y cerrar
sus sentencias.
20
Comparativa
Maven Gradle
Los scripts de Maven son un poco largos en Los scripts de Gradle son mucho más cortos y
comparación con Gradle limpios
Su uso es altamente extendido, ha estado muchos Su uso es poco extendido por ser más nuevo
años en el mercado
Ejemplo de Ejecución
23
Comparativa - Tiempo de procesamiento
24
Conclusiones