Project Object Model (POM)
Introducción
El POM es un archivo XML que representa la estructura de un proyecto Maven, este archivo lleva por nombre pom.xml, actualmente la versión soportada por Maven es la 4.0.
Se puede decir que un archivo POM esta compuesto de los siguientes elementos o secciones:
- Elementos básicos.
- Información del proyecto.
- Módulos.
- Herencia.
- Dependencias.
- Propiedades.
- Configuración de construcción del proyecto.
- Configuración del entorno de construcción.
- Entorno del proyecto.
- Entorno de Maven.
<project> <modelVersion>4.0.0</modelVersion> <!-- Elementos básicos --> <groupId>...</groupId> <artifactId>...</artifactId> <version>...</version> <packaging>...</packaging> <!-- Información del proyecto --> <name>...</name> <description>...</description> <url>...</url> <inceptionYear>...</inceptionYear> <licenses>...</licenses> <organization>...</organization> <developers>...</developers> <contributors>...</contributors> <!-- Módulos --> <modules>...</modules> <!-- Herencia --> <parent>...</parent> <dependencyManagement>...</dependencyManagement> <!-- Dependencias --> <dependencies>...</dependencies> <!-- Propiedades --> <properties>...</properties> <!-- Configuración de construcción del proyecto --> <build>...</build> <reporting>...</reporting> <!-- Entorno del proyecto --> <issueManagement>...</issueManagement> <ciManagement>...</ciManagement> <mailingLists>...</mailingLists> <scm>...</scm> <!-- Entorno de Maven --> <prerequisites>...</prerequisites> <repositories>...</repositories> <pluginRepositories>...</pluginRepositories> <distributionManagement>...</distributionManagement> <profiles>...</profiles> </project>
Definiciones
groupId:
Es el nombre del paquete o grupo al que pertenece el proyecto, como por ejemplo com.csd-web.utils
artifactId:
Es el nombre del proyecto o del módulo a desarollar, por ejemplo logger
version:
Es la versión actual del módulo o proyecto, por ejemplo 0.1
modules:
Es una lista de los módulos que componen el proyecto, esto se utiliza cuando se trata de un proyecto multimódulo.
parent:
Esta etiqueta se utiliza si nuestro proyecto pertenece a un proyecto padre del cual debe heredar ciertas características, todos los proyectos tienen como padre SuperPOM por defecto
dependencyManagement:
En esta etiqueta se indican cuales seran las dependencias de los proyectos hijos que deben heredar del POM padre.
dependencies:
Aquí se especifican todas las dependencias desde otros proyectos externos para que Maven los incluya en el momento de construir el proyecto.
properties:
Son las propiedades o variables que se pueden definir a la hora de la construcción del proyecto.
Ejemplo de un POM
Aqui les muestro el archivo POM del proyecto SLF4J
<?xml version="1.0" encoding="UTF-8"?>
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-parent</artifactId>
<version>1.5.8</version>
<packaging>pom</packaging>
<name>SLF4J</name>
<url>http://www.slf4j.org</url>
<organization>
<name>QOS.ch</name>
<url>http://www.qos.ch</url>
</organization>
<inceptionYear>2005</inceptionYear>
<properties>
</properties>
<modules>
<module>slf4j-api</module>
<module>slf4j-simple</module>
<module>slf4j-nop</module>
<module>slf4j-jdk14</module>
<module>slf4j-log4j12</module>
<module>slf4j-jcl</module>
<module>slf4j-ext</module>
<module>jcl-over-slf4j</module>
<module>jcl104-over-slf4j</module>
<module>log4j-over-slf4j</module>
<module>jul-to-slf4j</module>
<module>integration</module>
<module>slf4j-site</module>
<module>slf4j-migrator</module>
</modules>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.3</source>
<target>1.3</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkMode>once</forkMode>
<reportFormat>plain</reportFormat>
<trimStackTrace>false</trimStackTrace>
<excludes>
<exclude>**/AllTest.java</exclude>
<exclude>**/PackageTest.java</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<aggregate>true</aggregate>
<excludePackageNames>org.slf4j.migrator:org.slf4j.migrator.*</excludePackageNames>
<links>
<link>
http://java.sun.com/j2se/1.5.0/docs/api
</link>
</links>
<groups>
<group>
<title>SLF4J packages</title>
<packages>org.slf4j:org.slf4j.*</packages>
</group>
<group>
<title>SLF4J extensions</title>
<packages>org.slf4j.profiler:org.slf4j.ext:org.slf4j.instrumentation:org.slf4j.agent</packages>
</group>
<group>
<title>Jakarta Commons Logging packages</title>
<packages>org.apache.commons.*</packages>
</group>
<group>
<title>Apache log4j</title>
<packages>org.apache.log4j</packages>
</group>
<group>
<title>java.util.logging (JUL) to SLF4J bridge</title>
<packages>org.slf4j.bridge</packages>
</group>
</groups>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>skipTests</id>
<properties>
<maven.test.skip>true</maven.test.skip>
</properties>
</profile>
<profile>
<id>osgi</id>
<modules>
<module>osgi-over-slf4j</module>
<module>slf4j-osgi-test-bundle</module>
<module>slf4j-osgi-integration-test</module>
</modules>
<repositories>
<repository>
<id>m2apache.snapshots</id>
<url>http://people.apache.org/repo/m2-snapshot-repository</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>springframework.org</id>
<name>Springframework Maven SNAPSHOT Repository</name>
<url>http://static.springframework.org/maven2-snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>apache.snapshots</id>
<name>Apache Snapshot Plugin Repository</name>
<url>http://people.apache.org/repo/m2-snapshot-repository</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<pluginRepositories>
<pluginRepository>
<id>apache.snapshots</id>
<name>Apache Snapshot Plugin Repository</name>
<url>http://people.apache.org/repo/m2-snapshot-repository</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<reportSets>
<reportSet><reports/></reportSet>
</reportSets>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.1</version>
<configuration>
<descriptors>
<descriptor>
src/main/assembly/source.xml
</descriptor>
</descriptors>
<finalName>slf4j-${project.version}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<outputDirectory>target/site/dist/</outputDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<reportSets>
<reportSet>
<reports>
<report>jxr</report>
<report>test-jxr</report>
</reports>
</reportSet>
</reportSets>
<configuration>
<aggregate>true</aggregate>
<javadocDir>target/site/api/</javadocDir>
<linkJavadoc>true</linkJavadoc>
</configuration>
</plugin>
</plugins>
</reporting>
<scm>
<connection>scm:svn:http://svn.slf4j.org/repos/slf4j/trunk</connection>
<developerConnection>scm:svn:https://svn.slf4j.org/repos/slf4j/trunk</developerConnection>
<url>http://svn.slf4j.org/viewvc/slf4j/trunk/</url>
</scm>
<distributionManagement>
<site>
<id>pixie</id>
<url>scp://pixie/var/www/www.slf4j.org/htdocs/</url>
</site>
<repository>
<id>pixie</id>
<url>scp://pixie/var/mvnrepo/</url>
</repository>
</distributionManagement>
</project>
Enlaces Externos
Algunos enlaces en los cuales puedes encontrar una referencia mas completa acerca de los archivos POM
Términos de búsqueda
Recent Comments