Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MAVEN by Habolanos PDF
MAVEN by Habolanos PDF
* Prueba de la Instalación
C:\Users\pepe> mvn -v
* Global setting: $M2_HOME/conf/settings.xml
* User setting: {user.home}/.m2/settings.xml
* Local reposiory: {user.home}/.m2/repository/
External External
Server Server
….…
Nexus Server
Pom efectivo:
mvn help:effective-pom!
Crear un proyecto Maven:
mvn archetype:generate !
-DgroupId=co.com.premize.maven.simple !
-DartifactId=simple !
-Dpackage=co.com.premize.maven !
-Dversion=1.0.0-SNAPSHOT!
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>co.com.premize.maven</groupId>
<artifactId>maven-ejemplo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<major version>.<minor version>.<incremental>-<qualifier>
!
Ejemplos
1.2.3-GA
3.5.6-Final
1.2.3-SNAPSHOT (versión especial)
!
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>sibling-project</artifactId>
<version>${project.version}</version>
</dependency>
<build>
<finalName>${project.baseUri}-${project.artifactId}</finalName>
</build>
<properties>
<maven.test.failure.ignore>true</maven.test.failure.ignore>
<spring.framework.version>3.1.0.M1</spring.framework.version>
</properties>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.framework.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.framework.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.framework.version}</version>
</dependency>
Maven controla que librerías son
necesarias en el classpath mediante
scopes:
* Compile
* Test
* Runtime
* Provided
* System
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>1.4.1</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>swarmcache</groupId>
<artifactId>swarmcache</artifactId>
<version>1.0RC2</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>junit</groupId> V >= 3.8
<artifactId>junit</artifactId> &&
<version>[3.8, 4.0)</version>
V < 4.0
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
V < 3.8.1
<version>[, 3.8.1]</version>
<scope>test</scope>
</dependency>
Proyecto-
A
Proyecto-
B
Proyecto-
C
Proyecto-
D
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.2.5.ga</version>
<exclusions>
<exclusion>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.2</version>
</dependency>
<dependencies>
</dependencyManagement>
Luego en un proyecto hijo, solo es necesario colocar:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<project>
<parent>
<groupId>com.training.killerapp</groupId>
<artifactId>a-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>project-a</artifactId>
...
<modules>
<module>book-examples</module>
<module>book-chapters</module>
</modules>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>co.com.mp.cni</groupId>
<artifactId>cni-main-pom</artifactId>
<packaging>pom</packaging>
<version>1.0.0</version>
<name>Reactor Principal</name>
<modules>
<module>../cni-model</module>
<module>../cni-servicios</module>
<module>../cni-spring-config</module>
...
</modules>
</project>
Crear cuatro proyectos: groupId: co.com.premize.[nombre_usuario]
1. Simple-api: artifactId: simple-api
2. Simple-services
3. Simple-client
4. Simple-parent
5. Simple-reactor
* En el primer proyecto crear la interface ProveedoresService, y la entidad Proveedor.
En la interfaces definir métodos del estilo CRUD.
* En el segundo proyecto crear la implementación de la interface ProveedoresService.
Hacer un test unitario que permita probar el método findById y findAll.
* El servicio que devuelva mocks, dummies. Este proyecto debe depender de las
librerías de hibernate para JPA.
* El proyecto 4 debe definir el padre de los demás proyectos. El mismo debe contener
una propiedad para especificar la versión de las librerías de hibernate a utilizar:
<hbm.version>3.6.3.Final</hbm.version>
* El quinto proyecto debe ser un multi-modulo y debe contener a los proyectos 1, 2, 3
y 4.
* El Ciclo de Vida de Construcción * Configuración de Plugins
* Introducción * Descripción de Parámetros de
* Principales fases del Ciclo de Vida Configuración de Plugins
* Ciclos de Vida Específicos para * Configuración de Parámetros
Empaquetamiento * Integración con IDE de desarrollo
* Objetivos (Goals) Comunes * Introducción a m2eclipse
* Construcción de proyectos a * Instalación
medida * Crear o Bajar Proyectos Maven
* Perfiles de Construcción * Ejecutar Comandos Maven
* Configuración de Proyectos con * Utilizando m2eclipse
Perfiles
* Activación de Perfil * Analizar Dependencias
* Generación del Sitio y Reportes * Verificar Información del POM
* Ver y Manipular Repositorios
* El ciclo de vida es la secuencia
organizada de fases que existen
para ejecutar un conjunto de
objetivos (goals).
* Una fase es un paso en el ciclo de
construcción de un proyecto que
puede tener cero o mas goals
relacionados.
* Un goal (objetivo) es la operación
que realmente se realiza sobre un
proyecto por ejemplo crear un jar
o un war.
* Un plugin es una colección de
goals.
mvn clean invoca el ciclo clean el cual tiene definido tres
fases:
* pre-clean!
* clean!
* post-clean!
La fase más importante es clean que posee enlazado el goal
clean:clean el cual está implementado en el plugin Clean
(maven-clean-plugin-2.x.jar).
* Este ciclo de vida es un modelo general de un
proceso de construcción para aplicaciones de
software. La primera fase es validate y la
última es deploy.
mvn release:perform
* Para que son útiles?
* Que es la portabilidad de una aplicación?
* Aplicaciones no portables
* Ambientes portables
* Portabilidad a través de Perfiles en Maven
<profiles>
<profile>
<build>
<defaultGoal>...</defaultGoal>
<finalName>...</finalName>
<resources>...</resources>
<testResources>...</testResources>
<plugins>...</plugins>
</build>
<reporting>...</reporting>
<modules>...</modules>
<dependencies>...</dependencies>
<dependencyManagement>...</dependencyManagement>
<distributionManagement>...</distributionManagement>
<repositories>...</repositories>
<pluginRepositories>...</pluginRepositories>
<properties>...</properties>
</profile>
</profiles>
* Que son los perfiles de activación?
* Como se configuran?
* Como se activa un perfil cuando ejecutamos
un goal?
* Protección de datos sensibles en los perfiles
* Ejemplo de Activación de Perfiles
* Un perfil se puede activar de varias maneras:
http://maven.apache.org/guides/introduction/introduction-to-profiles.html