© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Introducción a Maven 2.0
TELEFÓNICA I+DCarlos Gómez Fecha: 25/03/2009
2TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
01 Introducción
02 Conceptos maven
03 Construcción de un proyecto
- Creación proyecto - Control de versiones
- Repositorios - Arquetipos
- Dependencias - Perfiles
- Plugins - Site y documentación
04 Maven en TID
05 Conclusiones
Índice
3TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
01 Introducción
02 Conceptos maven
03 Construcción de un proyecto
- Creación proyecto - Control de versiones
- Repositorios - Arquetipos
- Dependencias - Perfiles
- Plugins - Site y documentación
04 Maven en TID
05 Conclusiones
Índice
4TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
¿Qué es maven?
Herramienta para gestión y construcción proyectos java
Lo que teníamos hasta ahora era:
— Ant
— Makefiles
— IDE
— Shell/Perl Scripts
01
5TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Aplicar patrones para la construcción de proyectos
Builds
Documentación
Informes
Dependencias
Integración con repositorios
Generación de releases
Distribución
Web del proyecto
01
6TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
¿Qué nos proporciona?
Un modelo estándar para gestionar y describir proyectos
— Encapsula mejores prácticas
— Bajo coste de configuración y mantenimiento
— Fácil integración de nuevas herramientas
Tras la instalación, dispondremos de funcionalidades que nos facilitarán tareas a distintos niveles
— Inicialización de proyectos, integración con IDEs, configuración de proyectos (JDKs, dependencias, ...)
Procedimientos por defecto para la realización de las tareas base
Compilación, pruebas unitarias, empaquetado,...
— Simplifica y unifica los procesos de distribución, mantenimiento de la documentación, instalación, ...
01
7TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
¿Qué nos proporciona?
Estructuras comprensibles que eviten cosas como...
01
8TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
01 Introducción
02 Conceptos maven
03 Construcción de un proyecto
- Creación proyecto - Control de versiones
- Repositorios - Arquetipos
- Dependencias - Perfiles
- Plugins - Site y documentación
04 Maven en TID
05 Conclusiones
Índice
9TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Conceptos maven Estructura de directorios
Estructura de directorios predefinida
— Estandarización
— Fácil comprensión
Facilita las operaciones con los Sistemas de Control de Versiones, de Gestión de Requisitos, …
02
10TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Conceptos mavenCiclos de vida
Tres ciclos
— Inicialización
— Construcción
— Documentación
02
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
11TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Conceptos mavenCiclo de vida asociado al proceso de construcción
Este proceso de construcción permite a los desarrolladores ir cambiando de proyectos, sin necesidad de tener que aprender nuevos procesos
validate
initialize
process-resources
generate-resources
generate-sources
process-sources
compile
process-class
generate-test-sources
compile-test
process-test-resources
process-test-sources
generate-test-sources
test
package
pre-integration-test
install
verify
integration-test
post-integration-test
deploy
02
12TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Conceptos mavenCiclo de vida asociado a la inicialización
pre-clean
clean
post-clean
02
13TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Conceptos mavenCiclo de vida asociado a la documentación
pre-site
site
post-site
deploy-site
02
14TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Conceptos Maven POM
pom.xml (Project Object Model)— Unidad de trabajo fundamental en Maven
— Describe la configuración del proyecto
– Nombre y descripción
– Dependencias de otros otros proyectos
– Requisitos de la construcción
– Información
– Empresa y desarrolladores
– Licencias
– Documentación del proyecto
02
15TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Conceptos maven Árbol POM
02
16TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Conceptos Maven POM mínimo
Lo único necesario para invocar a Maven para construir un JAR, WAR, etc. Si se está utilizando la estructura de ficheros fuentes por defecto
<?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>es.tid.ad.seminar</groupId><artifactId>ms</artifactId><version>0.0.1-SNAPSHOT</version><name>Seminario de spring y maven</name><packaging>jar</packaging> <!-- optional for JAR -->
</project>
02
17TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
01 Introducción
02 Conceptos maven
03 Construcción de un proyecto
- Creación proyecto - Control de versiones
- Repositorios - Arquetipos
- Dependencias - Perfiles
- Plugins - Site y documentación
04 Maven en TID
05 Conclusiones
Índice
18TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Construcción de un proyecto Creación proyecto
Creación de un proyecto a partir de un arquetipo genérico
Estructura inicial:
mvn archetype:generate -DgroupId=com.mycompany.app-DartifactId=app -Dversion=0.0.1-SNAPSHOT –DinteractiveMode=false
03
19TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Construcción de un proyecto Compilación
Compilación del proyecto
Resultado compilación:
mvn compile
03
20TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Construcción de un proyecto Ejecución de test
Ejecución de test
Resultado test:
mvn test
03
21TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Construcción de un proyecto Empaquetado
Ejecución del empaquetado
Resultado:
mvn package
03
22TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Construcción de un proyecto Instalación en el repositorio local
Ejecución de la instalación en un repositorio local
Resultado instalación:
mvn install
03
23TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Construyendo un proyecto Resumen construcción
El resultado del proyecto es un artifact (componente)
— Los goals (objetivos) más comunes para la construcción son:
– compile – Compila el código
– test – Testea el código
– package – Empaqueta el componente (jar,war,ear, …)
– install – Instala el componente en el repositorio local
– deploy – Instala el componente en el repositorio remoto
– eclipse:eclipse – Adapta el componente a eclipse
— Ej: Incialización empaquetado de un componentemvn clean package
deployinstallpackagetestcompile
03
24TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
01 Introducción
02 Conceptos maven
03 Construcción de un proyecto
- Creación proyecto - Control de versiones
- Repositorios - Arquetipos
- Dependencias - Perfiles
- Plugins - Site y documentación
04 Maven en TID
05 Conclusiones
Índice
25TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Repositorios
Los artifacts(componente/proyecto) son almacenados en:
— Repositorio Local: Funciona a modo de caché de todos los artifacts utilizados en los proyectos que hay instalados en la máquina (Por defecto en: $HOME/.m2/repository para linux o C:\Documents and Settings\<user>\.m2\repository para windows)
— Repositorio remoto: Accesible a través de http, https o scp al almacén de componentes
El repositorio Central de Maven contiene los artifacts más comunes (unos 50000)
— http://repo1.maven.org/maven2
03
26TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Repositorios
Configuración de repositorios(I)
— pom.xml
<distributionManagement> <!– Repositorio de componentes estables-->
<repository><id>repos-release</id> <name>Repositorio de componentes de TID</name> <url>http://reposbcn.hi.inet:8081/nexus/content/repositories/tidRelease/</url>
</repository> <!– Repositorio de componentes inestables-->
<snapshotRepository> <id>repo-snapshot</id>
<name>Repositorio de snapshots componentes</name> <url>http://reposbcn.hi.inet:8081/nexus/content/
repositories/tidSnapshot/ </url> </snapshotRepository>...
03
27TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Repositorios
Configuración de repositorios (II)
— pom.xml
…<!– Repositorio de documentación del proyecto --><site>
<id>reposbcn-site</id> <url> scp://reposbcn.hi.inet/home/maven/MAVEN/site/${project.groupId} /${artufactId}</url>
</site></distributionManagement>
03
En http://reposbcn.hi.inet/maven/site/es.tid.cd.archetypes/standalone-archetype/maven-repositories.html están definidos todos los repositorios en los que se entregan los diferentes componentes
28TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Repositorios
Configuración de repositorios(III)
— $MAVEN_HOME/conf/settingxs.xml
<server><id>repo-release</id> <username>admin</username> <password>admin123</password>
</server<server> <id>repo-snapshot</id> <username>admin</username> <password>admin123</password> </server><server> <id>repo-site</id> <username>maven</username> <password>ihateant</password> </server>
03
En http://reposbcn.hi.inet/maven/site/es.tid.cd.archetypes/standalone-archetype/maven-configuration.html está disponible la configuración completa de maven
29TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
01 Introducción
02 Conceptos maven
03 Construcción de un proyecto
- Creación proyecto - Control de versiones
- Repositorios - Arquetipos
- Dependencias - Perfiles
- Plugins - Site y documentación
04 Maven en TID
05 Conclusiones
Índice
30TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Añadiendo dependencias (I)
Se declaran las dependencias y automáticamente son añadidas al classpath e incluidas en la distribución resultante del componente.— Cada dependencia se ha de incluir dentro de un scope
– compile: Son necesarias para compilar el proyecto (Se incluyen en el classpath de compilación)
– runtime: Son necesarias únicamente para ejecutar el proyecto (Se incluyen en el classpath de ejecución).
– Ej: La librería commons-logging nos abstrae de la librería de trazas que se utilice a la hora de ejecutar el proyecto. Por eso la librería commons-logging se ha de añadir al scope de compile, mientras que la de log4j, sólo es necesario en el scope de runtime
– test: Son necesarias para ejecutar los tests del proyecto (El classpath de ejecución de los test está formado por las dependencias en el scope de compile, runtime y test).
– provided: Son necesarias para la compilación del proyecto, pero no se han de entregar en el paquete.
– Ej: La librería servlet-api es necesaria para compilar servlets, pero esta librería ya la incluyen los servidores de aplicaciones (En tomcat $TOMCAT_HOME/lib/servlet-api.jar) y no hay que incluirla en el WAR.
– system: Esta dependencia está instalada en la misma máquina, y por tanto se apunta a la ruta donde está instalada. El efecto es el mismo que el scope de compile.
03
31TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Añadiendo dependencias (I)
Ejemplo:
<dependencies> <dependency> <groupId>
commons-logging</groupId>
<artifactId>commons-logging-api</artifactId> <version>1.1.1</version>
<scope>compile</scope> </dependency> <dependency>
<groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.15</version><scope>runtime</scope>
</dependency>
<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet.api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency>
<groupId>junit</groupId><artifactId>junit</artifactId><version>4.5</version><scope>test</scope>
</dependency></dependencies>
03
32TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Añadiendo dependencias (II)
Maven soporta dependencias transitivas, es decir, que cuando se inserta una dependencia, si esta depende de otras, estas otras se añaden al classpath. Si no son necesarias, hay que excluirlas:<dependencies>
<dependency> <groupId>commons-logging </groupId> <artifactId>commons-logging-api</artifactId>
<version>1.1.1</version> <scope>compile</scope> <exclusions> <exclusion> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> </exclusion> <exclusion> <groupId>logkit</groupId> <artifactId>logkit</artifactId> </exclusion> <exclusion> <groupId>avalon-framework</groupId> <artifactId>avalon-framework</artifactId> </exclusion>
</exclusions> </dependency>
03
33TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
01 Introducción
02 Conceptos maven
03 Construcción de un proyecto
- Creación proyecto - Control de versiones
- Repositorios - Arquetipos
- Dependencias - Perfiles
- Plugins - Site y documentación
04 Maven en TID
05 Conclusiones
Índice
34TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Plugins
Se encargan de personalizar el proceso de construcción de un proyecto maven.
Se configuran en la sección de build ( y en la de site para generación de la Web del proyecto)
<build><plugins><!-- modificar las opciones del compilador --> <plugin> <artifactId>maven-compiler-plugin</artifactId>
<configuration> <source>1.6</source> <target>1.6</target> <encoding>utf-8</encoding> <debug>false</debug> <optimize>true</optimize> </configuration> </plugin> </plugins></build>
03
35TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Plugins
Ej 2: Definición del empaquetado de un proyecto<!-- Definición del empaquetado del proyecto --> <plugin> <artifactId>maven-assembly-plugin</artifactId> <!-- CONFIGURACIÓN PARAMETROS --> <configuration> <filters> <filter>src/main/filters/${env}.properties</filter> <!-- Para un entorno en concreto --> </filters> <descriptors> <descriptor>src/main/assembly/dep.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>make-assembly</id> <phase>install</phase> <!-- FASE EN LA QUE SE EJECUTA ESTE PLUGIN. --> <goals> <goal>single</goal> <!– METODO DEL PLUGIN QUE SE EJECUTARÁ LA FASE DE INSTALL --> <!-- Ver http://maven.apache.org/plugins/maven-assembly-plugin/plugin-info.html --> </goals> </execution> </executions> </plugin>
03
36TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Plugins Plugins estándar de maven
Core
— Clean
— Compiler
— Deploy
— Install
— Resources
— Site
— Surefire
— Verifier
Integration
— Eclipse
— Idea
Packaging— Ear
— Ejb
— Jar
— Rar
— War
Reporting— Changelog
— Changes
— Checkstyle
— Clover
— Javadocs
— PMD
— Surefire-reports
Tools
— Ant
— Archetype
— Assembly
— Dependency
— Help
— Release
— SCM
— ...
Others
— cargo
— Jetty
— ...
03
37TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Plugins Invocación plugins
Dos formas:
—
Ejemplos:
— mvn site:site (Genera la documentación del proyecto)
— mvn site:deploy (Copia la documentación del proyecto en un repositorio remoto)
— mvn scm:checkout (Hace un checkout del proyecto)
mvn plugin:goal
mvn pluginGroupId:pluginArtifactId:pluginVersion:goal
03
38TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
01 Introducción
02 Conceptos maven
03 Construcción de un proyecto
- Creación proyecto - Control de versiones
- Repositorios - Arquetipos
- Dependencias - Perfiles
- Plugins - Site y documentación
04 Maven en TID
05 Conclusiones
Índice
39TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Control de versiones
Maven permite integrarse con la mayoría de sistemas de control de versiones: (CVS, SVN, …). Para ello:
— Configurar POM para acceder al repositorio
— Configurar POM para realizar release del proyecto
03
40TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Control de versiones Acceso al repositorio
Configuración en el POM
<scm> <url>http://reposbcn.hi.inet/repositorio/publicidad/carlosg/trunk/cxf</url> <!-- Acceso modo lectura anónimo --> <connection>
scm:svn:http://reposbcn.hi.inet/repositorio/publicidad/carlosg/trunk/cxf </connection> <!-- Acceso modo lectura/escritura NO anónimo --> <developerConnection>
scm:svn:https://reposbcn.hi.inet/repositorio/publicidad/carlosg/trunk/cxf </developerConnection>
</scm>
03
41TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Control de versiones Acceso al repositorio. Configuración maven-scm-plugin
POM para hacer checkout, checkin, update, … (http://maven.apache.org/scm/plugins/)
<build><plugins> <!-- integración con SVN --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-scm-plugin</artifactId> <version>1.0</version> <configuration> <goals>install</goals> <!-- Se descarga el proyecto, lo compila, pasa los tests, lo empaqueta y lo instala en el repositorio local --> <checkoutDirectory>/home/cm/CM/dev/eclipse/workspace</checkoutDirectory> <username>carlosg</username> <password>mipassword</password> <tagBase> scm:svn:https://reposbcn.hi.inet/repositorio/commovistar/tags </tagBase> </configuration> </plugin></plugins></build>
mvn scm:checkout / mvn scm:checking
03
42TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
POM para hacer release (http://maven.apache.org/plugins/maven-release-plugin/)<build>
<plugins> <!-- integración con SVN --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>1.0</version> <configuration> <username>carlosg</username> <password>mipassword</password> <tagBase>https://reposbcn.hi.inet/repositorio/publicidad/carlosg/tags </tagBase> </configuration> </plugin></plugins></build>
mvn release:prepare Compila, pasa los test y genera tag en el repositorio
mvn release:perform Se descarga el contenido del tag generado, compila, pasa test, genera el “.jar” con la versión y lo entrega en el repositorio y genera la documentación
Control de versiones Generación release. Configuración maven-release-plugin
03
43TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
01 Introducción
02 Conceptos maven
03 Construcción de un proyecto
- Creación proyecto - Control de versiones
- Repositorios - Arquetipos
- Dependencias - Perfiles
- Plugins - Site y documentación
04 Maven en TID
05 Conclusiones
Índice
44TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Arquetipos
Para empezar un proyecto se puede elegir un patrón de proyecto o arquetipo.
Un arquetipo es un proyecto MAVEN, con su propio pom.xml
En el fichero archetype.xml se definen los diferentes ficheros que forman la plantilla
Se crea a partir de mvn archetype:generate
Ej: Arquetipo para crear una aplicación JSF
mvn archetype:generate -DgroupId=es.tid.icm.cm -DartifactId=jsf-app-sample -DarchetypeArtifactId=maven-archetype-jsfapp -DarchetypeGroupId=es.tid.formacion -DarchetypeVersion=1.0-SNAPSHOT -DremoteRepositories=http://ironman.hi.inet:7777/maven
03
45TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Arquetipos Estructura de un archetipo
03
46TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
ArquetiposEjemplo: Construcción de un proyecto JSF
Ej: Arquetipo para crear una aplicación JSF
Creando el proyecto con el arquetipo
03
mvn archetype:generate -DgroupId=es.tid.icm.cm -DartifactId=jsf-app-sample -DarchetypeArtifactId=maven-archetype-jsfapp -DarchetypeGroupId=es.tid.formacion -DarchetypeVersion=0.0.1-SNAPSHOT -DremoteRepositories=http://ironman.hi.inet:7777/maven –DinteractiveMode=false
47TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
ArquetiposEjemplo: Construcción de un proyecto JSF Proyecto creado
03
48TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
ArquetiposEjemplo: Construcción de un proyecto JSF Adaptación del proyecto a eclipse
03
49TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
ArquetiposEjemplo: Construcción de un proyecto JSF Proyecto adaptado a eclipse
03
50TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
ArquetiposEjemplo: Construcción de un proyecto JSF Insertando proyecto en eclipse
03
51TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
ArquetiposEjemplo: Construcción de un proyecto JSF Insertando proyecto en eclipse (II)
03
52TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
ArquetiposEjemplo: Construcción de un proyecto JSF Insertando proyecto en eclipse (III)
03
53TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
ArquetiposEjemplo: Construcción de un proyecto JSF Insertando proyecto en eclipse (IV)
03
54TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
01 Introducción
02 Conceptos maven
03 Construcción de un proyecto
- Creación proyecto - Control de versiones
- Repositorios - Arquetipos
- Dependencias - Perfiles
- Plugins - Site y documentación
04 Maven en TID
05 Conclusiones
Índice
55TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Perfiles de construcción
Modifica la construcción del proyecto dependiendo del entorno:
— Dependencias, repositorios y plugins
El perfil puede ser seleccionado por:
— El sistema operativo, JDK, la existencia de algún software, o bien a través de la línea de comandos.
— Por usuario o por proyecto
Y puede ser usado para entornos estándar
— Desarrollo, Integración y Producción
03
56TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Perfiles de construcción
Ejemplo:
— Configuración de los repositorios (Se incluyen en el pom.xml, settings.xml ó en profiles.xml)
<profiles> <!-- Profile desarrollo (Activo por defecto) --> <profile> <id>development</id> <activation><activeByDefault>true</activeByDefault> </activation> <properties> <env>development</env> <compiler.info.debug>true</compiler.info.debug> <compiler.optimize>false</compiler.optimize> </properties> </profile> <!-- Producción --> <profile> <id>production</id> <activation> <activeByDefault>false</activeByDefault> </activation> <properties> <env>production</env> <compiler.info.debug>false</compiler.info.debug> <compiler.optimize>true</compiler.optimize> </properties> </profile> <!-- Integration --> …
03
57TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
01 Introducción
02 Conceptos maven
03 Construcción de un proyecto
- Creación proyecto - Control de versiones
- Repositorios - Arquetipos
- Dependencias - Perfiles
- Plugins - Site y documentación
04 Maven en TID
05 Conclusiones
Índice
58TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Site y Documentación
Maven ayuda a la generación de la web del proyecto, añadiendo información del componente de forma “automática”, a partir de la descripción del mismo en el pom.xml
Acepta diferentes formatos de entrada de texto
— APT (Almost Plain Text)
— Xdoc
— FML (Faq Markup Language)
— DocBook
Permite la salida en Xdoc, XHTML, DocBook, Latex y RTF
La generación del site permite la utilización de plantillas de velocity.
03
59TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Ejemplo de documento APT03
60TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Ejemplo de documento APT03
61TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Generando la documentación del proyecto
Creando el site (mvn site:site)
03
62TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Generando la documentación del proyecto
Resultado de la generación
03
63TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Generando la documentación del proyecto
Desplegando el site (mvn site:deploy)
03
64TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Generando la documentación del proyecto
Accediendo a la web del proyecto (I)
03
65TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Generando la documentación del proyecto
Accediendo a la web del proyecto (II)
03
66TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Generando la documentación del proyecto
POLÉMICA APT/WIKI
— Ventajas wiki:
– Edición muy sencilla y con posiblidadades de previsualización
– No es necesario compilar la documentación
— Ventjas APT:
– Generación automática de informes
– Toda la documentación asociada al proyecto
03
67TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
01 Introducción
02 Conceptos maven
03 Construcción de un proyecto
- Creación proyecto - Control de versiones
- Repositorios - Arquetipos
- Dependencias - Perfiles
- Plugins - Site y documentación
04 Maven en TID
05 Conclusiones
Índice
68TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
MAVEN en TID
Objetivo:
— Utilizar un repositorio de componentes común para compartir todos los componentes
Trabajo colaborativo
— No se trata de que alguien se dedique a hacer componentes para el resto de divisiones o proyectos. Sino que cada uno compartiese volutariamente sus componentes.
— Para conseguirlo habría que definir una guía de buenas prácticas donde se recogiesen, ¿cuáles son los requisitos para compartir un componente?
– Documentación del componente
– Jerarquía de paquetes
– ...
04
69TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
MAVEN en TID Repositorios “oficiales” de TID
En http://reposbcn.hi.inet:8081/nexus existe un proxy de repositorios.
Repositorios internos (acceso modo lectura/escritura)— http://reposbcn.hi.inet/maven/site/es.tid.cd.archetypes/sta
ndalone-archetype/maven-repositories.html
Repositorios externos (Consultaros en http://reposbcn.hi.inet:8081/nexus)
Repositorio documentación
— http://reposbcn.hi.inet/maven/site/${project.groupId}/${project.artifactId}
04
70TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
01 Introducción
02 Conceptos maven
03 Construcción de un proyecto
- Creación proyecto - Control de versiones
- Repositorios - Arquetipos
- Dependencias - Perfiles
- Plugins - Site y documentación
04 Maven en TID
05 Conclusiones
Índice
71TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Conclusiones¿Cómo encaja maven dentro de un proyecto?
Definiendo y manteniendo proyectos de forma estandarizada
Generando informes de los que obtener indicadores para la toma de decisiones
Agilizando los procesos de distribución
Centralizando la información mediante la generación de un sitio web para los proyectos
Integrándose con repositorios de fuentes, sistemas de integración contínua…
05
72TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Conclusiones
No dedicar más tiempo del necesario a definir procedimientos si herramientas como Maven ya los modelan.
Maven como resultado de la experiencia de otros profesionales.
Existe gran cantidad de plugins que nos permiten trabajar con framework y librerías más conocidas: hibernate, struts, Spring, ... (Cuidadiiiiiiiin!! con los plugins que algunos no están estables, y la mayoría poco documentados).
Permite el trabajo colaborativo
La generación automatizada de código fuente, archivos de configuración, documentación, etc..., aumenta la productividad y reduce el riesgo de errores.
05
73TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Dudas, preguntas, …
74TELEFÓNICA I+D
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal
Bibliografía
Web oficial de maven
— http://maven.apache.org
Documentación de maven en reposbcn (Esta presentación)
— http://pimpam.googlecode.com/svn/trunk/standalone-archetype/src/site/resources/Introducci%c3%b3n%20a%20Maven%202.ppt
— Better Builds with maven
— http://www.devzuz.com/c/document_library/get_file?folderId=8&name=DLFE-52.pdf