Maven: 04 – pom.xml
Comento un poco por encima lo que va en el pom.xml
groupId y artifactId:
groupId es una manera de agrupar tus proyectos dentro de los repositorios, pero no es más que una cosa lógica. artifactId es más el proyecto. Por ejemplo puedes poner los dos iguales
<groupId>com.tudominio.miproyecto</groupId>
<artifactId>com.tudominio.miproyecto</artifactId>
O el mismo groupId para varios de tus proyectos, por ejemplo
<groupId>utils</groupId>
<artifactId>com.tudominio.mathutils</artifactId>
<groupId>utils</groupId>
<artifactId>com.tudominio.langutils</artifactId>
packaging:
Aquí pones si el proyecto va a generar un war
<packaging>war</packaging>
o un jar
<packaging>jar</packaging>
Si es un proyecto de utilidades generarás un jar que se pondrá como dependencia en otros proyectos y si es un proyecto web el cual instalarás por ejemplo en el tomcat, generarás un war.
version:
Ya he comentado en un vídeo anterior, que ahí pones la versión del proyecto: 2.3, 2.3-SNAPSHOT…
name:
Yo creo que no sirve para nada, quizás se incluya en el manifiest del jar o war de manera informativa
url:
Yo creo que no sirve para nada
repositories dentro de project:
Hay dos seciones de repositories. En la que cuelga de <project> defines lo que en vídeos anteriores he llamado repositorios privados si trabajas en equipo, así como otros repositorios que necesites para jares que no estén en el repositorio de Maven.
Si no trabajas en equipo y no usas ningún jar que no esté en en el repositorio de Maven no necesitarás esta sección de repositories.
dependencies:
Aquí metes las dependencias de otros proyectos, por ejemplo
<dependencies>
<dependency>
<groupId>utils</groupId>
<artifactId>com.tudominio.mathutils</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
Lo de <scope>provided</scope> es para que no me incluya el jar en el war puesto que en mi caso el javax.servlet-api lo tengo en el lib del tomcat.
Las dependencias son transitivas, es decir si un protecto A tiene como dependencia un proyecto B y este proyecto B tiene como dependencia al proyecto C, el proyecto A no tiene que definir como dependencia al proyecto C, lo coge automáticamente.
También es listo resolviendo conflictos. Si por ejemplo en el caso anterior, el proyecto B tiene como dependencia la versión 2.0 del proyecto C, pero el proyecto A necesita la versión 2.1 del proyecto C, lo que hace el proyecto A es definir como dependencia la 2.1 del proyecto C y Maven se ocupa de descartar la 2.0 que heredaría del proyecto B.
repositories dentro de distributionManagement:
Aquí hay que definir otra vez tus repositorios privados donde publicas tu programación aunque ya los hayas definido dentro de project. Dentro de project defindes de dónde lees, pero en distributionManagement defines dónde publicas.
Igualmente si no trabajas en equipo no necesitas esta sección.
Si la necesitas puede ser de este estilo
<distributionManagement>
<repository>
<uniqueVersion>false</uniqueVersion>
<id>release-repository</id>
<name>Release Repository</name>
<url>ftp://myprivateserver/maven-repository-release</url>
<layout>default</layout>
</repository>
<snapshotRepository>
<uniqueVersion>true</uniqueVersion>
<id>snapshot-repository</id>
<name>Snapshot Repository</name>
<url>ftp://myprivateserver/maven-repository-snapshot</url>
<layout>default</layout>
</snapshotRepository>
</distributionManagement>
Nota:
Tal y como se ve aquí y comenté en un vídeo previo, los repositorios internos privados los he montado por ftp. El usuario y contraseña se define en el settings.xml de tu home, por ejemplo.
C:/Users/pepe/.m2/settings.xml
Ahí, si has definido dos repositories dentro de project y otros dos repositories dentro de distributionManagement tienes que poner cuatro usuarios y contraseña dentro del settings.xml, aunque sean el mismo. Por ejemplo
<settings>
<servers>
<server>
<id>release-repository</id>
<username>xxx</username>
<password>xxx</password>
</server>
<server>
<id>snapshot-repository</id>
<username>xxx</username>
<password>xxx</password>
</server>
<server>
<id>internal-release-repository</id>
<username>xxx</username>
<password>xxx</password>
</server>
<server>
<id>internal-snapshot-repository</id>
<username>xxx</username>
<password>xxxx</password>
</server>
</servers>
</settings>
Cada id debe coincidir con el que has puesto para cada uno en el pom.xml.
SIN COMENTARIOS
Quique, Lunes, 23 de Mayo de 2016. PERMALINK