Software">
HDC DevOps Maven
HDC DevOps Maven
HDC DevOps Maven
DevOps:
Maven
PROFESOR/INGENIERO
Resumen
- DevOps es un acrónimo inglés de development (desarrollo) y operations
(operaciones), que se refiere a una metodología de desarrollo de
software que se centra en la comunicación, colaboración e integración
entre desarrolladores de software y los profesionales de sistemas en las
tecnologías de la información (IT)". DevOps es una respuesta a la
interdependencia del desarrollo de software y las operaciones IT. Su
objetivo es ayudar a una organización a producir productos y servicios
software más rápidamente, de mejor calidad y a un coste menor. Las
empresas con entregas (releases) muy frecuentes podrían requerir
conocimientos de DevOps. Flickr desarrolló un sistema DevOps para
cumplir un requisito de negocio de diez despliegues diarios. A este tipo
de sistemas se les conoce como despliegue continuo (continuous
deployment) o entrega continua (continuous delivery), y suelen estar
asociados a metodologías lean startup. Grupos de trabajo, asociaciones
profesionales y blogs usan el término desde 2009. Con todo lo anterior se
puede recetar en tres ideas clave:
- DevOps es una metodología para creación de software.
- DevOps se basa en la integración entre desarrolladores software y
administradores de sistemas.
- DevOps permite fabricar software más rápidamente, con mayor calidad,
menor coste y una altísima frecuencia de releases.
Definición
¿Qué es Maven?
Maven es una herramienta de gestión de proyectos y compilación que
generalmente se utiliza en marcos creados en Java. Está desarrollado por la
Fundación de Software Apache. Maven, una palabra del idioma yiddish, significa
"recolector de conocimientos". Se introdujo para realizar el proceso de
activación de la construcción en el Proyecto de Turbinas de Yakarta. Aunque se
puede utilizar con diversos lenguajes (C#, Ruby, Scala...) se usa principalmente
en proyectos Java, donde es muy común ya que está escrita en este lenguaje. De
hecho, frameworks Java como Spring y Spring Boot la utilizan por defecto.
Apache Maven es una potente herramienta de gestión de proyectos que se
utiliza para gestión de dependencias, como herramienta de compilación e
incluso como herramienta de documentación. Es de código abierto y gratuita.
Al contrario que otras herramientas anteriores y más limitadas como Apache Ant
(también muy popular), Maven utiliza convenciones sobre dónde colocar ciertos
archivos para el proceso de build de un proyecto, por lo que solo se debe
establecer las excepciones y por lo tanto simplifica mucho el trabajo. Además, es
una herramienta declarativa. Es decir, todo lo que definamos (dependencias en
módulos y compontes externos, procesos, orden de compilación, plugins del
propio Maven...) se almacena en un archivo XML que Maven lee a la hora de
funcionar. Otras alternativas, como Gradle no utilizan archivos XML, sino de otro
tipo, pero usan los mismos conceptos de Maven.
Prueba experta
Esta es otra de las fases principales en las cuales una vez se ha compilado el
código se ejecutan las pruebas unitarias que se han construido para él. De esta
forma nos aseguramos que nuestro código es correcto y no nos llevaremos
ninguna sorpresa en producción.
Paquete Maven (ciclo de vida de Maven).
Esta es otra de las fases fundamentales ya que se encarga de empaquetar
nuestro código a un formato standard de Java que permita su ejecución o
despliegue en servidor. Los empaquetados más habituales.
Maven verificar.
Esta fase del ciclo de vida se encarga de lanzar los test de integración para
confirmar que todo funciona correctamente y que la calidad es la correcta.
Repositorio Maven
El repositorio Maven puede ser de tres tipos:
- Repositorio local
- Repositorio remoto
- Repositorio central
Una vez que Maven lee las dependencias del archivo POM, primero las busca en
el repositorio local, luego en el central y finalmente en el repositorio remoto. Si
las dependencias no se encuentran en ninguno de los tres repositorios, se
notifica al usuario con un error y se detiene el proceso.
#1) Repositorio local de Maven
El repositorio local está ubicado en nuestro sistema local, principalmente en el
directorio .m2 (C:/Users /superdev /.m2), que muestra su presencia una vez que
Maven está instalado en nuestro sistema y hemos podido ejecutar con éxito un
comando de Maven.
#2) Repositorio central de Maven
El repositorio central (https://repo.maven.apache.org/maven2/ ) es
desarrollado por el grupo Apache Maven y está alojado en la web. Este se
considera el repositorio central y cuenta con todas las bibliotecas comunes. Al
igual que un repositorio local, también podemos modificar la ubicación donde
se descargarán por defecto cambiando el archivo settings.xml.
#3) Repositorio remoto de Maven
También se aloja un repositorio remoto en la web. En algunos escenarios, una
empresa puede desarrollar su propio repositorio remoto y realizar
implementaciones en sus proyectos privados. Estos serán propiedad de esa
empresa específica y podrán operarse únicamente dentro de ella.
El repositorio remoto tiene patrones de trabajo similares a los de un repositorio
central. Siempre que se requieran dependencias o configuraciones de estos
repositorios, primero se descargarán en nuestro local y luego se usarán.
Herencia y agrupación
#1) Herencia
Maven permite gestionar dependencias desde un pom padre a los hijos para
simplificar y evitar redundancias. El empaquetado debe indicarse como pom en
la definición del pom padre.
El Super POM es un ejemplo de herencia de proyecto.
Es similar a como cualquier objeto Java hereda de Object.
Permite al equipo de desarrollo de Maven definir un patrón claro y estable de
base que estará siempre presente. El usuario tan solo tiene que añadir en su
pom aquellos cambios que requiera para su proyecto concreto.
#2) Agrupación.
POM extendido
#1.1) Propiedades.
• Definen constantes para usar en cualquier otra parte del pom.xml
• Se declaran en su propio campo.
• Se acceden desde cualquier parte con ${nombre-propiedad} como por
ejemplo: ${project.build.sourceEncoding}
• Muchos plugins usan propiedades para facilitar cambios de configuración.
#2.1) Build
Información sobre el proceso de compilación y construcción del proyecto.
#2.4) Informes
E l campo <reporting> sirve para configurar plugins que es criben algún tipo de
informe, como puede ser generar el javadoc del código.
Al igual que <build>, se definen plugins con su correspondiente configuración.
Para más granularidad, también se definen reportSets para poder configurar
qué hacer con acciones concretas.
#2.5) Información adicional
E l pom recoge la mayoría de meta-información del proyecto. Algunos datos
habituales que se incluyen:
• Datos de empres a o grupo
• Licencias
• Equipo
• Datos de CI/C D
• Gestor de incidencias
Bibliografía:
https://www.softwaretestinghelp.com/maven-tutorial/
https://www.tokioschool.com/noticias/que-es-maven/
https://www.campusmvp.es/recursos/post/java-que-es-maven-que-es-el-
archivo-pom-xml.aspx
https://www.arquitecturajava.com/que-es-un-maven-lifecycle-y-como-funciona/
https://eusebiorubio.es/fases-de-maven-explicadas-en-un-grafico/
https://www.arquitecturajava.com/que-es-un-java-maven-artifact/
https://maven.apache.org/guides/introduction/introduction-to-the-pom