Apache Maven
POM - Modelo de objeto de proyecto
Buscar..
Estructura de pom
El modelo de objetos del proyecto es la unidad básica de Maven y define la estructura del proyecto, las dependencias, etc.
Los siguientes son muy mínimos para crear un POM:
- raíz del
project
-
modelVersion
- se debe establecer en4.0.0
-
groupId
- el ID del grupo del proyecto -
artifactId
- el ID del artefacto (proyecto) -
version
: la versión del artefacto en el grupo especificado
groupId
, artifactId
y version
se llaman coordenadas de Maven y a veces se abrevian con GAV . Identifican de forma única el artefacto resultante de un proyecto en un repositorio de Maven (y deberían hacerlo en todo el universo).
Una muestra mínima de POM se ve así:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.sample</groupId>
<artifactId>sample-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
</project>
Herencia POM
La herencia es el activo más importante de la POM, donde lo siguiente se puede administrar desde la súper POM a la POM secundaria.
- dependencias
- desarrolladores y colaboradores
- listas de complementos (incluyendo informes)
- ejecuciones de plugin con identificadores coincidentes
- configuración de plugin
Lo siguiente habilita la herencia.
<parent>
<groupId>com.sample</groupId>
<artifactId>sample-app-parent</artifactId>
<version>1.0.0</version>
</parent>
La estructura de POM se parece a
<project>
<parent>
<groupId>com.sample</groupId>
<artifactId>sample-app-parent</artifactId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.sample</groupId>
<artifactId>sample-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
</project>
Agregación POM
Los módulos de un proyecto de múltiples módulos se agregan desde una estructura jerárquica.
El empaque de la raíz pom
debe verse como:
<packaging>pom</packaging>
La siguiente será la estructura de directorios del proyecto:
|-- sample-app
\ `-- pom.xml
|-- sample-module-1
| `-- pom.xml
|-- sample-module-2
| `-- pom.xml
POM raíz:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.sample</groupId>
<artifactId>sample-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>sample-module-1</module>
<module>sample-module-2</module>
</modules>
<dependencyManagement>
...
</dependencyManagement>
</project>