Archivos pom y settings

En este artículo hablaremos de los archivos pom y settings en Maven; veremos sus principales características y algunos de sus elementos más importantes. 

Archivo pom

Cada proyecto de Maven tiene un archivo pom que define de qué se trata el proyecto y cómo debe construirse. POM son las siglas en inglés de Project Object Model. 

Un archivo pom es un archivo XML que se basa en un esquema específico, como se especifica en la parte superior del archivo como se muestra a continuación.

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

				
			

También existe un elemento modelVersion que define la versión de este esquema:

				
					<modelVersion>4.0.0</modelVersion>
				
			

Elementos básicos de un archivo pom

El elemento groupId es un identificador único de la organización a la que pertenece el proyecto. Es una buena práctica seguir la notación inversa del nombre de dominio para especificar esto. Por ejemplo, si nuestra organización tiene el dominio miorganizacion.compras.com una buena práctica para nombrar nuestro groupId sería com.compras.miorganizacion. El groupId está identificado con la etiqueta:

				
					<groupId>...</groupId>
				
			

El elemento artifactId es el nombre del proyecto. El artifacId está identificado con la etiqueta:

				
					<artifactId>...</artifactId>
				
			

El elemento version es la instancia específica del proyecto, correspondiente al código fuente en un momento particular. La versión está identificada por la etiqueta:

				
					<version>...</version>
				
			

La combinación de groupId, artifactId y version identifica de forma única el proyecto. 

El packaging indica el tipo de artefacto del proyecto. Por lo general suele ser un jar, un zip, o en algunos casos, un pom. El packaging está identificado por la etiqueta:

				
					<packaging>...</packaging>
				
			

La sección de dependencias dependencies del archivo pom define todos los proyectos de los que depende el proyecto. Por lo general, se requieren bibliotecas de terceros para compilar, probar y ejecutar el proyecto. La etiqueta para identificar las dependencias es:

				
					<dependencies>...</dependencies>
				
			

El parent se utiliza para indicar una relación, específicamente una relación padre-hijo. Si el proyecto es parte de un proyecto de varios módulos o hereda la información del proyecto de otro proyecto, los detalles se especifican en esta sección. El parent se identifica por la etiqueta:

				
					<parent>...</parent>
				
			

Las propiedades Maven son marcadores de posición. Se puede acceder a sus valores en cualquier parte del archivo pom usando ${key}, donde key es el nombre de la propiedad. Las propiedades se identifican por la etiqueta:

				
					<properties>...</properties>
				
			

Un proyecto con módulos se conoce como proyecto multimódulo. Los módulos se identifican dentro de la siguiente etiqueta:

				
					<modules>...</modules>
				
			

Si estás interesado en ampliar estos conocimientos y ver cómo funcionan los principales aspectos de Maven tanto teóricamente como en la práctica te recomiendo mi curso de Apache Maven:

Apache Maven: Construcción de proyectos de cero a avanzado

Aprenda a construir sus aplicaciones Java y Scala de forma sencilla y siguiendo las mejores prácticas de desarrollo

Archivo settings

Maven tiene un archivo de configuración global llamado settings.xml en la carpeta conf de la instalación de Maven. Los valores de este archivo se pueden anular en el archivo settings.xml, que está presente en la carpeta .m2 de su carpeta HOME.

El archivo de configuración contiene configuraciones que no son específicas de un proyecto, sino que son de naturaleza global. También contiene información que no está destinada a ser distribuida (por ejemplo, contraseñas).

Al igual que el archivo pom, el archivo de configuración también es un archivo XML basado en un esquema XML que comienza de la siguiente manera:

				
					<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-
1.0.0.xsd">

				
			

Algunas configuraciones del archivo settings

El elemento localRepository es utilizado para cambiar la ubicación predeterminada donde se almacenan las dependencias y complementos de Maven. Está representado por la etiqueta:

				
					<localRepository>${user.home}/.m2/repository</localRepository>
				
			

Para este caso que acabamos de ver, está apuntando a la ruta por defecto del repositorio local que se encuentra en la carpeta .m2 del usuario.

El elemento offline. Esta configuración indica si Maven debe operar en modo fuera de línea; es decir, no debe descargar actualizaciones ni dependencias si no están disponibles. Está representado por la etiqueta:

				
					<offline>...</offline> 
				
			

El elemento proxies se emplea para indicar la información de los servidores proxy. Está representado por la etiqueta <proxies>.

El elemento mirror se emplea para en lugar de descargar dependencias del repositorio central de Maven, configurar Maven para descargarlas desde un espejo del repositorio central. Esto es extremadamente útil en una organización donde el repositorio se puede reflejar en un administrador de repositorios dentro de una organización y todos los usuarios pueden descargar dependencias desde este espejo.

El elemento repositories. Los repositorios son colecciones remotas de proyectos que Maven usa para completar las dependencias requeridas en un repositorio local. Hay dos tipos de repositorios, versiones(releases) e instantáneas(snapshots), y Maven permite configuraciones específicas para cada uno.

El elemento pluginRepositories. Mientras que los repositorios almacenan las dependencias necesarias para el proyecto, el elemento pluginRepositories almacena bibliotecas de complementos y archivos asociados. Maven distingue entre estos dos al tener configuraciones separadas para ambos. Los elementos son los mismos que para los repositorios, excepto que el elemento principal es pluginRepositories.

El elemento servers. Si bien los repositorios para la descarga y el despliegue están definidos por los elementos repositories y distributionManagement del archivo pom, las configuraciones como el nombre de usuario y la contraseña no se pueden distribuir en el archivo pom por razones de seguridad. Maven proporciona un mecanismo para especificar esto en el archivo de configuración a través de la sección servers. La etiqueta que empleamos para ello es servers.

				
					<servers>
    <server>
        <id>server001</id>
        <username>mi_usuario</username>
        <password>mi_contraseña</password>
        <privateKey>${user.home}/.ssh/id_dsa</privateKey>
        <passphrase>alguna_frase</passphrase>
        <filePermissions>664</filePermissions>
        <directoryPermissions>775</directoryPermissions>
        <configuration></configuration>
    </server>
</servers>

				
			

En resumen estos son los elementos fundamentales que componen a los archivos pom y settings, así como alguna de sus características. Si deseas seguir profundizando en temas relacionados con Maven y en cómo construir tus aplicaciones Java o Scala de una forma sencilla, rápida y siguiendo las mejores prácticas de desarrollo te recomiendo mi curso Apache Maven: Construcción de proyectos de cero a avanzado en donde cubrimos todos estos aspectos y mucho más.

Entradas creadas 26

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Publicaciones relacionadas

Comienza escribiendo tu búsqueda y pulsa enter para buscar. Presiona ESC para cancelar.

Volver arriba