¿Qué es Maven? · A partir de este hecho, el grupo Apache desarrollo . Maven, el cual es capaz de...

109
1 ¿Qué es Maven? Maven es una herramienta de gestión y comprensión de proyectos. Maven ofrece a los desarrolladores un marco de trabajo para construir todas las etapas del ciclo de vida de una aplicación. El equipo de desarrollo puede automatizar la infraestructura necesaria para la creación de proyectos en poco tiempo. Maven utiliza un esquema de directorio estándar y una construcción de etapas clásicas de ciclo de vida de un proyecto. En el caso en el que el desarrollo de un proyecto, sea realizado por varios equipos de desarrollo, Maven puede configurar la forma de trabajar basándose en estándares en muy poco tiempo. Como la mayoría de las configuraciones de proyecto son simples y reutilizable, Maven facilita la vida a los desarrolladores proporcionando de forma automática: la creación de informes, validaciones, compilación y pruebas de configuraciones de forma automatización. Maven facilita el trabajo de los desarrolladores maneras de administrar siguientes: Maven permite gestionar: Compilaciones Creación de documentación Creación de informes Resolución de dependencias Releases Distribuciones Listas de correo En conclusión, Maven simplifica y estandariza el proceso de creación de proyectos. Gestiona la compilación, distribución, documentación colaboración en grupo y tareas similares. Maven incrementa la reutilización y se encarga de la mayor parte de las tareas relacionadas con las tareas de compilación. Historia de Maven Maven fue creado con el fin de simplificar el proceso de compilación den el proyecto Turbine de Jakarta. Había varios proyectos y cada uno de ellos contenía ficheros de construcción de ANT muy parecidos. A partir de este hecho, el grupo Apache desarrollo Maven, el cual es capaz de construir proyectos, publicar información acerca de los mismos, desplegar proyectos, compartir JARs y ayudar en la colaboración entre grupos de desarrollo. Objetivo de Maven El objetivo primario de maven es proporcionar a los desarrolladores: Un modelo comprensible para: la creación de proyectos y el mantenimiento de proyectos. Plugins y tools que interactúan con este modelo declarativo.

Transcript of ¿Qué es Maven? · A partir de este hecho, el grupo Apache desarrollo . Maven, el cual es capaz de...

  • 1

    ¿Qué es Maven? Maven es una herramienta de gestión y comprensión de proyectos. Maven ofrece a los desarrolladores un marco de trabajo para construir todas las etapas del ciclo de vida de una aplicación. El equipo de desarrollo puede automatizar la infraestructura necesaria para la creación de proyectos en poco tiempo. Maven utiliza un esquema de directorio estándar y una construcción de etapas clásicas de ciclo de vida de un proyecto.

    En el caso en el que el desarrollo de un proyecto, sea realizado por varios equipos de desarrollo, Maven puede configurar la forma de trabajar basándose en estándares en muy poco tiempo. Como la mayoría de las configuraciones de proyecto son simples y reutilizable, Maven facilita la vida a los desarrolladores proporcionando de forma automática: la creación de informes, validaciones, compilación y pruebas de configuraciones de forma automatización. Maven facilita el trabajo de los desarrolladores maneras de administrar siguientes:

    Maven permite gestionar:

    • Compilaciones • Creación de documentación • Creación de informes • Resolución de dependencias • Releases • Distribuciones • Listas de correo

    En conclusión, Maven simplifica y estandariza el proceso de creación de proyectos. Gestiona la compilación, distribución, documentación colaboración en grupo y tareas similares. Maven incrementa la reutilización y se encarga de la mayor parte de las tareas relacionadas con las tareas de compilación.

    Historia de Maven Maven fue creado con el fin de simplificar el proceso de compilación den el proyecto Turbine de Jakarta. Había varios proyectos y cada uno de ellos contenía ficheros de construcción de ANT muy parecidos. A partir de este hecho, el grupo Apache desarrollo Maven, el cual es capaz de construir proyectos, publicar información acerca de los mismos, desplegar proyectos, compartir JARs y ayudar en la colaboración entre grupos de desarrollo.

    Objetivo de Maven El objetivo primario de maven es proporcionar a los desarrolladores:

    • Un modelo comprensible para: la creación de proyectos y el mantenimiento de proyectos.

    • Plugins y tools que interactúan con este modelo declarativo.

  • 2

    La estructura y contenido de un proyecto Maven se define en un fichero nombrado pom.xml. Este fichero se llama POM (Project Object Model). El POM es la piedra angular de MAVEN.

    Convención sobre configuración. Maven utiliza Convención sobre configuración, lo que significa que los desarrolladores no tienen que crear el proceso de creación de ellos mismos. Los desarrolladores no tienen que mencionar todos y cada uno de los detalles de configuración. Maven proporciona un comportamiento para proyectos. Cuando se crea un proyecto Maven, Maven crea la estructura del proyecto de forma predeterminada. El desarrollador sólo debe colocar los ficheros en la forma apropiada y no necesitamos definir ninguna configuración en el fichero pom.xml.

    Por ejemplo, la siguiente tabla muestra los valores por defecto para los archivos de código fuente de un proyecto, archivos de recursos y otras configuraciones. Asumiendo que la variable ${basedir} indica la ubicación del proyecto:

    Item Valor por defecto Código fuente ${basedir}/src/main/java Recursos ${basedir}/src/main/resources Ficheros con las pruebas ${basedir}/target/classes Compiled byte code ${basedir}/src/test JAR para la distribución ${basedir}/target

    Para crear el proyecto, Maven proporciona a los desarrolladores opciones para seleccionar el ciclo de vida objetivo (goal) y dependencias de proyectos (esto depende de las capacidades de los plugins y en sus convenciones por defecto). La mayor parte de la gestión de proyectos, construcción de los mismos y tareas relacionadas es llevada a cabo por los plug-ins de Maven.

    Los desarrolladores pueden crear proyectos Maven sin necesidad de conocer cómo funcionan los plugins. Sin embargo para poder adaptarlos a necesidades concretas es necesario saber cómo configurarlos. En la sección Plugins de Maven se dan los detalles para su configuración.

  • 3

    Maven Environment Setup

    Maven se basa en, así que el primer requisito es tener instalado el kit de desarrollo de Java (SDK)

    System Requirement JDK 1.5 o superior.

    Memory Sin requisito mínimo. Disk Space Sin requisito mínimo.

    Operating System Sin requisito.

    1º Paso. Verificar la instalación de JAVA en su ordenador Abrir un terminal (cmd.exe) y ejecutar el siguiente comando de acuerdo al S.O. que esté instalado:

    Sistema Operativo

    Tarea Comando

    Windows Abrir un terminal (cmd.exe) c:\> java -version Linux Abrir un terminal $ java -version Mac Abrir terminal $ java -version

    El resultado de la ejecución debe ser algo similar a lo siguiente:

    Sistema Operativo

    Salida

    Windows java version "1.7.0_07" Java(TM) SE Runtime Environment (build 1.7.0_07-b10) Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

    Linux java version "1.7.0_07" Java(TM) SE Runtime Environment (build 1.7.0_07-b10) Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

    Mac java version "1.7.0_07" Java(TM) SE Runtime Environment (build 1.7.0_07-b10) Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

    En caso de que no esté instalado Java, debe proceder a su instalación para ello basta con descargar install the Java Software Development Kit (SDK) from http://www.oracle.com/technetwork/java/javase/downloads/index.html. Se recomienda instalar Java SE 7u9

    http://www.oracle.com/technetwork/java/javase/downloads/index.html

  • 4

    2º Paso: Configurar el entorno JAVA Se debe crear la variable de entorno JAVA_HOME y hacer que su valor sea igual a la ruta en donde instalo el SDK.

    Sistema Operativo Salida Windows JAVA_HOME = C:\Program Files\Java\jdk1.7.0_07

    Linux export JAVA_HOME=/usr/local/java-current Mac export JAVA_HOME=/Library/Java/Home

    Añadir la ubicación del compilador de Java al Path del sistema.

    Sistema Operativo Salida Windows Agregar, a la variable de sistema PATH, la cadena

    ;C:\Program Files\Java\jdk1.7.0_07\bin Linux export PATH=$PATH:$JAVA_HOME/bin/ Mac No se debe hacer nada

    3º Paso: Descargar Maven Descargar la versión 2.2.1 from http://maven.apache.org/download.html

    Sistema Operativo

    Nombre del fichero

    Windows apache-maven-2.0.11-bin.zip Linux apache-maven-2.0.11-bin.tar.gz Mac apache-maven-2.0.11-bin.tar.gz

    4º Paso: Extraer los ficheros de Maven Descomprima el fichero “apache-maven-2.2.1-bin.zip” en su ordenador (Para Windows se sugiere la ruta: c:\soft). Una vez descomprimido, debe tener el subdirectorio con Maven

    Sistema Operativo

    Ubicación (depende del S.O.)

    Windows C:\soft\apache-maven-2.2.1 Linux /usr/local/apache-maven Mac /usr/local/apache-maven

    http://maven.apache.org/download.html

  • 5

    5º Paso: Establecer las variables de entorno de Maven Se deben agregar las variables de entorno M2_HOME, M2, MAVEN_OPTS

    S.O. Salida Windows M2_HOME=C:\soft\apache-maven-2.2.1

    M2=%M2_HOME%\bin

    MAVEN_OPTS=-Xms256m -Xmx512m Linux export M2_HOME=/usr/local/apache-maven/apache-maven-2.2.1

    export M2=%M2_HOME%\bin

    export MAVEN_OPTS=-Xms256m -Xmx512m Mac Open command terminal and set environment variables.

    export M2_HOME=/usr/local/apache-maven/apache-maven-2.2.1

    export M2=%M2_HOME%\bin

    export MAVEN_OPTS=-Xms256m -Xmx512m

    6º Paso: Añada la ubicación del directorio bin al Path del sistema

    S.O. Salida Windows Agregar, a la variable de sistema PATH, la cadena: ;%M2%. Linux export PATH=$M2:$PATH Mac export PATH=$M2:$PATH

    8º Paso 8: Verificar la instalación de Maven Abrir una terminal y ejecutar el comando mvn siguiente.

    S.O. Tarea Comando Windows Abrir una consola: c:\> mvn --version Linux Abrir un Terminal: $ mvn --version Mac Abrir un Terminal machine:~ joseph$ mvn --version

    Finalmente, verifique que en la terminal de comandos, aparece algo como lo siguiente:

  • 6

    S.O. Salida Windows Apache Maven 2.2.1 (r801777; 2009-08-06 21:16:01+0200)

    Java version: 1.7.0_07 Java home: C:\soft\jdk1.7-64bits\jre

    Linux Apache Maven 2.2.1 (r801777; 2009-08-06 21:16:01+0200) Java version: 1.7.0_07 Java home: C:\soft\jdk1.7-64bits\jre

    Mac Apache Maven 2.2.1 (r801777; 2009-08-06 21:16:01+0200) Java version: 1.7.0_07 Java home: C:\soft\jdk1.7-64bits\jre

  • 7

    Maven POM

    POM es el acrónimo de Project Object Model. Es la piedra angular de trabajo en Maven. Es un fichero XML. Siempre debe estar en el directorio base de un proyecto con el nombre pom.xml.

    El POM contiene información sobre el proyecto y detalles de la configuración utilizada por Maven para construir los proyectos. POM también contiene las metas (goals) y los plugins. Durante la ejecución de una tarea (task) o meta (goal), Maven busca el POM en el directorio actual. Lee el POM, obtiene la información de configuración necesaria, y luego ejecuta la meta (goal). Algunas de la configuración que puede especificarse en el POM son los siguientes:

    • Dependencias del proyecto • plugins • Metas (goals) • Perfiles de construcción (build profiles) • Versionado del proyecto • Desarrolladores • Listas de correo

    Antes de crear un POM, primero se debe decidir el grupo del proyecto (groupId), su nombre (artifactId) y su versión.

    Estos atributos definen de forma única al proyecto en el repositorio.

    POM Ejemplo 4.0.0 com.companyname.project-group project 1.0

    Para cada proyecto, debe existir un fichero POM.

    • Todos y cada uno de los ficheros POM necesitan tener: El elemento project y tres campos obligatorios: groupId, artifactId, version.

    • La notación que se utiliza en el repositorio es la siguiente: groupId:artifactId:version.

    • El elemento raíz del fichero POM.xml es el elemento Project. Project tiene tres sub-nodos principales:

  • 8

    Nodo Descripción groupId Identificador de grupo del proyecto. Debe ser único dentro de una

    organización o proyecto. artifactId Identificador del proyecto. En general es el nombre del proyecto.

    Junto al identificador de grupo, sirve para definir la ubicación del proyecto dentro del repositorio.

    version Versión del proyecto

    Super POM Todos los POM heredan de su padre (sea definido de forma explícita o no). Esta POM base es conocido como el Super POM, y contiene valores por defecto.

    Maven utiliza el pom efectivo (configuración básica del super pom más la configuración del proyecto) para ejecutar una meta (goal). Sirve a los desarrolladores para especificar detalles de la configuración mínima de su pom.xml. Aunque las configuraciones se pueden cambiar fácilmente.

    Una manera fácil de ver las configuraciones predeterminadas de la super POM es ejecutando el siguiente comando: mvn help:effective-pom

    Práctica:

    1. Crear la carpeta c:\dawsjee\mvn\pr01 2. Crear el fichero c:\dawsjee\mvn\pr01\pom.xml en formato UTF-8 3. Modificar el fichero c:\dawsjee\mvn\pr01\pom.xml para que contenga lo

    siguiente:

    4.0.0 com.companyname.project-group project 1.0 NOTA: Al copiar y pegar reemplaza las dobles comillas.

    4. Abrir un terminal, colocarse en la carpeta c:\dawsjee\mvn\pr01 y ejecutar el comando mvn help:effective-pom

  • 9

    Resultado de la salida

    [INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'help'. [INFO] ------------------------------------------------------------------------ [INFO] Building Unnamed - com.companyname.project-group:project:jar:1.0 [INFO] task-segment: [help:effective-pom] (aggregator-style) [INFO] ------------------------------------------------------------------------ [INFO] [help:effective-pom {execution: default-cli}] [INFO] Effective POMs, after inheritance, interpolation, and profiles are applied: 4.0.0 com.companyname.project-group project 1.0 C:\dawsjee\mvn\pr01\src\main\java src/main/scripts C:\dawsjee\mvn\pr01\src\test\java C:\dawsjee\mvn\pr01\target\classes C:\dawsjee\mvn\pr01\target\test-classes resource-0 C:\dawsjee\mvn\pr01\src\main\resources

  • 10

    resource-1 C:\dawsjee\mvn\pr01\src\test\resources C:\dawsjee\mvn\pr01\target project-1.0 maven-antrun-plugin 1.3 maven-assembly-plugin 2.2-beta-2 maven-clean-plugin 2.2 maven-compiler-plugin 2.0.2 maven-dependency-plugin 2.0 maven-deploy-plugin 2.4 maven-ear-plugin 2.3.1 maven-ejb-plugin 2.1 maven-install-plugin 2.2 maven-jar-plugin 2.2 maven-javadoc-plugin 2.5 maven-plugin-plugin 2.4.3 maven-rar-plugin 2.2 maven-release-plugin 2.0-beta-8 maven-resources-plugin 2.3 maven-site-plugin 2.0-beta-7 maven-source-plugin

  • 11

    2.0.4 maven-surefire-plugin 2.4.3 maven-war-plugin 2.1-alpha-2 maven-help-plugin 2.1.1 always jboss Repository for Archetype http://richfaces-maven-plugin.googlecode.com/svn/maven2 false central Maven Repository Switchboard http://repo1.maven.org/maven2 never false central Maven Plugin Repository http://repo1.maven.org/maven2 C:\dawsjee\mvn\pr01\target/site [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: < 1 second [INFO] Finished at: Sat Dec 08 07:43:28 CET 2012 [INFO] Final Memory: 8M/154M [INFO] ------------------------------------------------------------------------

    No es necesario escribir el fichero pom.xml.

    Maven proporciona una gran cantidad de arquetipos para crear proyectos.

  • 12

    ¿Qué significa Ciclos-de-vida de la construcción de un proyecto? El ciclo de vida de la construcción de un proyecto, es una secuencia de fases que indican el orden en el que las metas (goals) deben ser ejecutadas. En donde, una fase representa una etapa del ciclo de vida.

    Por ejemplo: Un ciclo de vida la construcción de un proyecto consiste de la siguiente secuencia de fases:

    Fase Tarea Descripción Preparar-recursos Copia de

    recursos En esta fase se automatiza el proceso de copiar recursos

    Compilar compilación En esta fase se realiza la compilación de código fuente Empacar empacado En esta fase se crean los ficheros JAR/WAR/EAR

    mencionados en el fichero pom.xml. instalar instalación En esta fase se instalan los paquetes en el repositorio

    Maven (local o remoto).

    Existen fases pre y fases post. Estas metas (goals) deben ser ejecutadas antes o después de una fase particular.

    Cuando Maven inicia la construcción de un proyecto, lo hace siguiendo una secuencia bien definida de fases, ejecutando las metas (goals) indicadas en cada fase. Los ciclos de vida estándar son:

    • clean • build (default) • site

    Una meta (goal) representa una tarea (task) que contribuye a la construcción y administración de un proyecto. Una meta puede estar asociada varias fases o a ninguna. A pesar de que una meta no está asociada a una fase esta puede ser ejecutada fuera del ciclo de vida, invocándola directamente

    El orden de ejecución depende del orden la que la meta (goal) o metas (goals) son invocadas. Por ejemplo, considere el comando siguiente. Los argumentos “clean” y “package” son fases de construcción mientras que el argumento “dependency:copy-dependencies” es una meta (goal).

    mvn clean dependency:copy-dependencies package

    La fase “clean” será ejecutada primero y a continuación se ejecutará la meta (goal) dependency:copy-dependencies goal finalmente la fase “package” será ejecutada.

    Ciclo de vida

  • 13

    Cuando se ejecuta el comando: mvn post-clean, Maven invoca el ciclo-de-vida que consta de las siguientes fases.

    • pre-clean • clean • post-clean

    La meta “clean” (clean:clean) está ligada a la fase “clean” . La meta clean:clean borra la salida generada por una compilación (elimina el directorio). Esto quiere decir que cuando se ejecuta el comando “mvn clean”, Maven elimina el directorio de construcción.

    En el siguiente ejemplo, vamos a ligar la meta “maven-antrun-plugin:run” a las fases pre-clean, clean y post-clean. Esto nos va a permitir enviar mensajes de texto indicando en que fase del ciclo-de-vida clean se está ejecutando.

    En la carpeta pom.xml in C:\dawsjee\mvn\pr02 se crea el fichero pom.xml con el siguiente contenido:

    4.0.0 com.companyname.projectgroup project 1.0 org.apache.maven.plugins maven-antrun-plugin 1.1 id.pre-clean pre-clean run pre-clean phase id.clean clean run clean phase

  • 14

    id.post-clean post-clean run post-clean phase

    Abrir un terminal, y ejecutar el siguiente comando mvn:Now open command console, go to the folder containing pom.xml and execute the following mvn command.

    C:\dawsjee\mvn\pr02>mvn post-clean

    [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0 [INFO] task-segment: [post-clean] [INFO] ------------------------------------------------------------------------ [INFO] [antrun:run {execution: id.pre-clean}] [INFO] Executing tasks [echo] pre-clean phase [INFO] Executed tasks [INFO] [clean:clean {execution: default-clean}] [INFO] [antrun:run {execution: id.clean}] [INFO] Executing tasks [echo] clean phase [INFO] Executed tasks [INFO] [antrun:run {execution: id.post-clean}] [INFO] Executing tasks [echo] post-clean phase [INFO] Executed tasks [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: < 1 second [INFO] Finished at: Sat Dec 08 12:02:30 CET 2012 [INFO] Final Memory: 5M/122M [INFO] ------------------------------------------------------------------------ C:\dawsjee\mvn\pr02>

    Si ejecuta el comando mvn clean command

    ¿Nota alguna diferencia?

    C:\dawsjee\mvn\pr02>mvn clean [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------

  • 15

    [INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0 [INFO] task-segment: [clean] [INFO] ------------------------------------------------------------------------ [INFO] [antrun:run {execution: id.pre-clean}] [INFO] Executing tasks [echo] pre-clean phase [INFO] Executed tasks [INFO] [clean:clean {execution: default-clean}] [INFO] [antrun:run {execution: id.clean}] [INFO] Executing tasks [echo] clean phase [INFO] Executed tasks [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: < 1 second [INFO] Finished at: Sat Dec 08 12:04:15 CET 2012 [INFO] Final Memory: 5M/122M [INFO] ------------------------------------------------------------------------

    Se ejecutan las metas: pre-clean and clean, no se ejecuta la fase post-clean.

    Ciclo-de-vida por defecto (Build) Este ciclo de vida es utilizado para construir una aplicación, consta de 23 fases.

    Fase del ciclo-de-vida Descripción

    validate Valida si el proyecto es correcto, y genera la información necesaria para completar el proceso build.

    initialize Inicializa propiedades

    generate-sources Genera el código fuente que será incluido en la fase de compilación.

    process-sources Procesa el código fuente, por ejemplo filtra valores.

    generate-resources Genera los recursos que se deben incluir en el paquete.

    process-resources Copia y procesa los recursos en el directorio destino.

    compile Compila el código fuente del proyecto.

    process-classes Realiza un Post-procesamiento de los ficheros generados en la compilación. El objetivo es optimizar/enriquecer los bytecodes de los ficheros .class de Java.

    generate-test-sources Genera cualquier código fuente necesario para ser incluido en la fase de compilación.

  • 16

    process-test-sources Procesa el código fuente de las pruebas, por ejemplo: se filtran valores, ….

    test-compile Compila el código fuente y lo deja en el directorio apropiado.

    process-test-classes Procesa los ficheros generados en la compilación

    test Ejecutar tests utilizando un marco-de-trabajo apropiado (Junit).

    prepare-package Realiza cualquier operación neesaria para preparar un paquete antes de ser empacado

    package El código compilado, es empacado en un formato susceptible de ser distribuido: JAR, WAR, EAR.

    pre-integration-test Realiza acciones necesarias antes de la integración de tests para su ejecución.

    integration-test Procesa y desliega el paquete en un entorno en donde los tests de integración pueden ser ejecutados.

    pre-integration-test Realizar acciones requeridas después de haber ejecutado los test de integración.

    verify Ejecutar cualquier validación para verificar que el paquete es valido y cumple los criterios de calidad.

    install Instalar los paquetes en el repositorio local, el cual puede ser utilizado como una dependencia en otros proyectos.

    deploy Copia el paquete final a los repositorios remotos.

    Hay pocos conceptos importantes relacionados con ciclos-de-vida que merecen ser mencionados.

    • Cuando una fase es llamada en base a un comando Maven, por ejmplo mvn compile, solo fases hasta llegar a esta fase incluida la fase será ejecutada.

    • Dependiendo del tipo de empacado (JAR / WAR / EAR), cambian las metas (goals) Maven que son enlazadas a diferentes fases del ciclo-de-vida .

    En el siguiente ejmplo, se enlaza la meta (goal) maven-antrun-plugin:run a algunas de las fases del ciclo-de-vida del proceso “Build”. Esto nos permite mostrar mensajes de texto indicando las fases del ciclo-de-vida.

    Para ello se debe crear la carpeta C:\dawsjee\mvn\pr03 y crear un fichero pom.xml con el siguiente código.

  • 17

    4.0.0 com.companyname.projectgroup project 1.0 org.apache.maven.plugins maven-antrun-plugin 1.1 id.validate validate run validate phase id.compile compile run compile phase id.test test run test phase id.package package run package phase id.deploy deploy

  • 18

    run deploy phase

    Ahora ejecuta el siguiente comando en una consola de comandos:

    C:\dawsjee\mvn\pr03>mvn compile La salida es: C:\dawsjee\mvn\pr03>mvn compile [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0 [INFO] task-segment: [compile] [INFO] ------------------------------------------------------------------------ [INFO] [antrun:run {execution: id.validate}] [INFO] Executing tasks [echo] validate phase [INFO] Executed tasks [INFO] [resources:resources {execution: default-resources}] [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory C:\dawsjee\mvn\pr03\src\main\resource s [INFO] [compiler:compile {execution: default-compile}] [INFO] No sources to compile [INFO] [antrun:run {execution: id.compile}] [INFO] Executing tasks [echo] compile phase [INFO] Executed tasks [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: < 1 second [INFO] Finished at: Sat Dec 08 12:51:31 CET 2012 [INFO] Final Memory: 8M/154M [INFO] ------------------------------------------------------------------------

    Ciclo-de-vida del plugin “site” El plugin site generalmente es utilizado para crear documentación referente a: informes, documentación, …

    Fases:

    • pre-site • site • post-site • site-deploy

  • 19

    En el siguiente ejemplo enlazamos la meta maven-antrun-plugin:run a todas las fases del ciclo-de-vida Site. Esto nos permitirá visualizar las fases del ciclo-de-vida.

    Crear la carpeta C:\dawsjee\mvn\pr04 y crear un fichero pom.xml con el siguiente código.

    4.0.0 com.companyname.projectgroup project 1.0 org.apache.maven.plugins maven-antrun-plugin 1.1 id.pre-site pre-site run pre-site phase id.site site run site phase id.post-site post-site run post-site phase id.site-deploy site-deploy run

  • 20

    site-deploy phase

    Ejecutar el siguiente comando mvn.

    C:\dawsjee\mvn\pr04>mvn site

    [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0 [INFO] task-segment: [site] [INFO] ------------------------------------------------------------------------ [INFO] [antrun:run {execution: id.pre-site}] [INFO] Executing tasks [echo] pre-site phase [INFO] Executed tasks [INFO] [site:site {execution: default-site}] [WARNING] No URL defined for the project - decoration links will not be resolved [INFO] artifact org.apache.maven.skins:maven-default-skin: checking for updates from jboss [INFO] Generating "About" report. [INFO] Generating "Issue Tracking" report. [INFO] Generating "Project Team" report. [INFO] Generating "Dependencies" report. [INFO] Generating "Project Plugins" report. [INFO] Generating "Continuous Integration" report. [INFO] Generating "Source Repository" report. [INFO] Generating "Project License" report. [INFO] Generating "Mailing Lists" report. [INFO] Generating "Plugin Management" report. [INFO] Generating "Project Summary" report. [INFO] [antrun:run {execution: id.site}] [INFO] Executing tasks [echo] site phase [INFO] Executed tasks [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2 seconds [INFO] Finished at: Sat Dec 08 12:57:19 CET 2012 [INFO] Final Memory: 31M/506M [INFO] ------------------------------------------------------------------------

  • 21

    ¿Qué es un Perfil de Construcción? Un perfil de construcción es un conjunto de valores de configuración que pueden ser utilizados para remplazar los valores por defecto del proceso “Maven Build”. Mediante los perfiles de construcción se pueden personalizar construcciones para diferentes entornos de desarrollo por ejemplo: Producción, Investigación.

    Los perfiles se especifican en el fichero pom.xml utilizando los elementos “activeProfiles” y “profiles”. Los perfiles modifican el POM en tiempo de construcción, y son utilizados para proporcionar parámetros a diferentes entornos “target” (por ejemplo, la ruta de los servidores de bases de datos dependiendo de desarrollo, pruebas, y producción).

    Tipos del perfil Build Los perfiles build profiles son principalmente de tres tipos

    Tipo ¿En donde es definido?

    Por proyecto Se definen en el fichero POM pom.xml

    Por usuario Se definen en el fichero xml: %USER_HOME%/.m2/settings.xml

    Global Se definen en el fichero xml: %M2_HOME%/conf/settings.xml

    Activación de perfiles La activación de perfiles se puede realizar de diferentes formas:

    • Explícitamente, utilizando la consola de comandos. • A través de “maven settings”. • Utilizando variables de entorno. • Presencia/ausencia de ficheros.

    Ejemplos de activación de perfiles Asumiendo que un proyecto tiene la siguiente estructura de directorios:

  • 22

    En la carpeta src\main\resources hay tres ficheros específicos:

    there are three environment specific files:

    File Name Description

    env.properties Configuración por defecto, utilizada si no se indica un perfil.

    env.test.properties Configuración de pruebas cuando se utiliza el perfil “test”.

    env.produccion.properties Configuración utilizada cuando de utiliza el perfil “produccion”

  • 23

    Activación explicita de un Perfil Modificar el fichero pom.xml, para ligar la meta maven-antrun-plugin:run a la fase test.

    En el fichero pom.xml se definen los perfiles y se activan utilizando parámetros en la líne de comandos.

    Assume, we've created following pom.xml in C:\MVN\project folder.

    4.0.0 com.companyname.projectgroup project 1.0 test org.apache.maven.plugins maven-antrun-plugin 1.1 test run Using env.test.properties

    Ejecute el siguiente comando maven, en donde se define el perfil utilizando la opción -P:

    C:\dawsjee\mvn\pr05>mvn test -Ptest

    La salida que se obtendrá será algo similar a lo siguiente:

    C:\dawsjee\mvn\pr05>mvn test -Ptest [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0 [INFO] task-segment: [test] [INFO] ------------------------------------------------------------------------

  • 24

    [INFO] [resources:resources {execution: default-resources}] [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] Copying 3 resources [INFO] [compiler:compile {execution: default-compile}] [INFO] Compiling 1 source file to C:\dawsjee\mvn\pr05\target\classes [INFO] [resources:testResources {execution: default-testResources}] [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory C:\dawsjee\mvn\pr05\src\test\resource s [INFO] [compiler:testCompile {execution: default-testCompile}] [INFO] No sources to compile [INFO] [surefire:test {execution: default-test}] [INFO] No tests to run. [INFO] [antrun:run {execution: default}] [INFO] Executing tasks [echo] Using env.test.properties [INFO] Executed tasks [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: < 1 second [INFO] Finished at: Sat Dec 08 14:38:17 CET 2012 [INFO] Final Memory: 13M/154M [INFO] ------------------------------------------------------------------------

    Cómo ejercicio, realice los siguientes cambios:

    • Agregue otro elemento perfil al fichero pom.xml • El id de este perfil debe ser normal. • Actualice la sección “task” para ejecutar el comando “echo env.properties” y

    copiar el fichero env.properties al directorio destino. • Repita los pasos anteriores para crear el perfil “produccion” y modificar la

    sección “task” para env.produccion.properties • Eso es todo. Ahora se cuentan con tres perfiles listos para ser utilizados (normal

    / test / produccion).

    En una ventana de comando ejecute los siguientes comandos.

    C:\dawsjee\mvn\pr05>mvn test –Pnormal C:\dawsjee\mvn\pr05>mvn test –Pproduccion

    Observe la salida de cada “build”.

  • 25

    Activación de perfiles usando los “settings” de Maven Crear, en caso de que no existe, el fichero xml settings.xml, localizado en la carpeta %USER_HOME%/.m2

    Declarar el perfil “test” como un perfila activo mediante el nodo activeProfiles, de la forma siguiente:

    maven.dev.snaponglobal.com Internal Artifactory Maven repository http://repo1.maven.org/maven2/ * test

    A continuación, abrir una consola de comandos, colocarse en la carpeta que contiene el fichero pom.xml y ejecutar el siguiente comando mvn test. (En este caso no es necesario utilizar la opción -P. El haber declarado el perfil test como un perfil activo hace que se ejecute directamente al ejecutar el comando mvn test).

    C:\dawsjee\mvn\pr05>mvn test

    Activación de un perfil mediante Variables de entorno Borre el perfil test, de perfiles activos en el fichero settings.xml y actualice el perfil test en el fichero pom.xml. Agregue el elemento “activation” al elemento perfil, de la siguiente forma:

    El perfil “test” será disparado cuando la propiedad de sistema “env” sea especificada con el valor "test". Para ello, se debe crear una variable de entorno "env" y establecer su valor a "test".

    test env test

    En una consola de comandos, ejecute el comando mvn siguiente:

    C:\dawsjee\mvn\pr05>mvn test

  • 26

    Activación de un perfil utilizando el S.O. Primero se debe agregar el elemento de activación, comofue descrito en el paso anterior.

    El perfil “test” se disparará cuando el S.O.sea Windows XP.

    test Windows XP Windows x86 5.1.2600

    Para comprobar que todo funciona apropiadamente, se debe ir a la carpeta que contiene el fichero pom.xml and y ejecutar el comando mvn siguiente (No se debe utilizar la opción –P )

    C:\dawsjee\mvn\pr05>mvn test

    Activación de un perfil, en base a la existencia o ausencia de un Fichero En este caso, el elemento “activation” debe ser declarado como sigue (El perfil test será disparado cuando no exista el fichero testt/generated-sources/axistools/wsdl2java/com/companyname/group ):

    test target/generated-sources/axistools/wsdl2java/com/companyname/group

    Para verificar que funciona apropiadamente, abra una consola de comandos, colóquese en la carpeta que contiene el fichero pom.xml y ejecute el comando mvn siguiente:

    C:\dawsjee\mvn\pr05>mvn test

  • 27

    ¿Qué es un repositorio Maven? En la terminología de Maven, un repositorio es un directorio en donde todos los ficheros jar, plugins, o cualquier otro artefacto de un proyecto son almacenados y pueden ser utilizados fácilmente por Maven.

    Existen tres tipos de repositorios Maven:

    • local • central • remoto

    Repositorio Local El repositorio Maven local es una carpeta en su ordenador. Se crea cuando se ejecuta por primera vez cualquier comando Maven.

    El repositorio Maven local mantiene todas las dependencias de sus proyectos (bibliotecas jars, plugin jars, etcétera). Cuando se ejecuta un proceso Maven “build”, de forma automática Maven descarga todos los ficheros jars de las dependencias y los almacena en el repositorio local. Ayuda a evitar referencias a dependencias almacenadas en máquinas remotas, cada vez que se construye un proyecto.

    Por defecto, el repositorio Maven local se crea en la carpeta %USER_HOME%. Para definir otra ubicación, basta con modificar el fichero settings.xml %M2_HOME%\conf.

    C:/MyLocalRepository

    Cuando ejecuta un comando Maven, Maven descargará las dependencias y las almacenará en el directorio indicado.

    Repositorio Central El repositorio Maven central es un repositorio proporcionado por la comunidad Maven. Este contiene un gran número de bibliotecas comúnmente utilizadas.

    Cuando Maven no encuentra dependencias en el repositorio local, inicia la búsqueda en el repositorio central utilizando la siguiente URL: http://repo1.maven.org/maven2/

    Conceptos clave del repositorio Central:

    • Este repositorio es gestionado por la comunidad Maven. • No es necesario configurarlo. • Se necesita acceso a Internet.

    http://repo1.maven.org/maven2/

  • 28

    Para ver el contenido del repositorio central Maven, la comunidad Maven proporciona la URL: http://search.maven.org/#browse.

    Repositorio Remoto Algunas veces, cuando Maven no encuentra una dependencia en el repositorio central detiene el proceso de construcción y escribe un mensaje de error en la consola. Para prevenir este caso, Maven proporciona el concepto de Repositorio Remoto, el cual es un repositorio alternativo.

    Por ejemplo, el fichero POM.xml siguiente, declara que las dependencias que no sean localizadas en el repositorio central, se busquen en un repositorio remoto alternativo.

    4.0.0 com.companyname.projectgroup project 1.0 com.companyname.common-lib common-lib 1.0.0 companyname.lib1 http://download.companyname.org/maven2/lib1 companyname.lib2 http://download.companyname.org/maven2/lib2

    Secuencia de búsqueda Cuando se ejecuta un comando “build”, Maven inicia la búsqueda de bibliotecas definidas en las dependencias siguiendo la siguiente secuencia:

    • Paso 1. Las dependencias son buscadas en el repositorio local, si no son localizadas, continuamos con el paso 2.

    • Paso 2. Las dependencias se buscan en el repositorio central, si son localizadas, se descargan y se almacenan en el repositorio local, si no son localizadas procedemos con el tercer paso.

    • Paso 3. Si no se han declarado repositorios remotos, Maven simplemente, detiene el proceso “build” y genera un error indicando que fue imposible encontrar una dependencia.

    • Paso 4. Se realiza la búsqueda de las dependencias en los repositorios remotos declarados en el fichero pom.xml, si localiza las dependencias, las descarga y las

    http://search.maven.org/#browse

  • 29

    almacena en el repositorio local, si no las localiza, Maven detiene el proceso “build” y genera un error, indicando que no pudo localizar la(s) referencia(s).

    ¿Quéson los Plugins de Maven? Realmente, Maven es un marco de trabajo para ejecutar plugins. Cada una de las tareas es hecha por uno o varios plugins. Los Plugins de Maven son utilizados para:

    • Crear ficheros jar • Crear ficheros war • Compilar ficheros • Ejecutar unidades de validación de código • Generar la documentación de proyectos • Generar informes acerca de proyectos

    En general, un plugin proporciona un conjunto de metas, que pueden ser ejecutadas utilizando la siguiente sintaxis:

    mvn [nombre-plugin]:[nombre-meta]

    Por ejemplo, un proyecto Java puede ser compilado con el plugin “maven-compiler compile-goal” ejecutando el siguiente comando.

    mvn compiler:compile

    Tipos de Plugins Maven proporciona dos tipos de Plugins:

    Tipo Descripción

    Build plugins Se ejecutan durante la construcción y debe ser configurado el elemento del fichero pom.xml

    Reporting plugins Se ejecutan durante la generación del “site”y se configuran con el elemento del fichero pom.xml

    A continuación se muestra una lista de algunos plugins.

    Plugin Description

    clean Borra el directorio destino.

    compiler Compila los ficheros fuente Java.

    surefile Ejecuta los tests unitarios JUnit unit tests. Genera informes del resultado de los tests.

  • 30

    jar Genera un fichero JAR.

    war Genera un fichero WAR

    javadoc Genera los ficheros Javadoc del proyecto.

    antrun Ejecuta un conjunto de tareas Ant, desde cualquier fase indicada en el proceso build.

    • Los plugins son definidos en el fichero pom.xml, dentro del elemento plugins. • Cada plugin puede consistir de varias metas. • Se puede definir la fase a partir de la cual se debe iniciar el procesamiento,

    definiéndolo en el elemento “phase”. • Es posible configurar tareas que deben ser ejecutadas enlazándolas con las metas

    de un plugin. Por ejemplo, se ha ligado la tarea echo task con la meta “run” del plugin maven-antrun

    • Esto es todo, Maven se encarga del resto. Descarga el plugin si no ese encuentra en el repositorio local, e inicia su procesamiento.

  • 31

    Creación de un Proyecto Java utilizando Maven

    Maven emplea plugins (denominados archetypes) para crear proyectos. Para crear una aplicación básica Java se puede utilizar el plugin maven-archetype-quickstart.

    Cree la carpeta C:\dawsjee\mvn\pr10, en una consola de comandos ejecute el siguiente comando mvn:

    C:\dawsjee\mvn>mvn archetype:generate -DgroupId=com.curso.jee -DartifactId=pr10 -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

    Maven se encarga de crear la estructura de una aplicación Java.

    C:\dawsjee\mvn>mvn archetype:generate -DgroupId=com.curso.jee -DartifactId=pr10 -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false [INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'archetype'. [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Default Project [INFO] task-segment: [archetype:generate] (aggregator-style) [INFO] ------------------------------------------------------------------------ [INFO] Preparing archetype:generate [INFO] No goals needed for project - skipping [INFO] [archetype:generate {execution: default-cli}] [INFO] Generating project in Batch mode [INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.0 [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: groupId, Value: com.curso.jee [INFO] Parameter: packageName, Value: com.curso.jee [INFO] Parameter: package, Value: com.curso.jee [INFO] Parameter: artifactId, Value: pr10 [INFO] Parameter: basedir, Value: C:\dawsjee\mvn [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] project created from Old (1.x) Archetype in dir: C:\dawsjee\mvn\pr10 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1 second [INFO] Finished at: Sat Dec 08 22:13:59 CET 2012 [INFO] Final Memory: 24M/221M [INFO] ------------------------------------------------------------------------

    La estructura de la carpeta PR10 es:

    C:\DAWSJEE\MVN\PR10 └───src ├───main │ └───java │ └───com │ └───curso │ └───jee └───test └───java └───com └───curso

  • 32

    └───jee

    Using above example, we can understand following key concepts

    Estructura de la carpeta Descripción

    pr10 Contiene la carpeta src y el fichero pom.xml

    src/main/java Contiene los ficheros con código Java. Estructura del paquete: com.curso.jee

    src/main/test Contiene los ficheros con código Java para verificar el proyecto. La estructura del paquete: com.curso.jee

    src/main/resources Esta carpeta debe ser creada manualmente. En ella se deben colocar los ficheros con images, ficheros de propiedades, etcétera.

    Observe que Maven ha creado un fichero fuente Java, y un fichero con código fuente para la validación (Test).

  • 33

    El contenido del fichero App.java es:

    package com.curso.jee; public class App{ public static void main( String[] args ){ System.out.println( "Hello World!" ); } }

    En la carpeta C:\dawsjee\mvn\pr10\src\test\java\com\curso\jee se ha creado el fichero AppTest.java. El contenido de este fichero es:

    import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * Unit test for simple App. */ public class AppTest extends TestCase{ /** * Create the test case * * @param testName name of the test case */ public AppTest( String testName ) { super( testName ); } /** * @return the suite of tests being tested

  • 34

    */ public static Test suite(){ return new TestSuite( AppTest.class ); } /** * Rigourous Test :-) */ public void testApp(){ assertTrue( true ); } }

    package com.companyname.bank; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * Unit test for simple App. */ public class AppTest extends TestCase { /** * Create the test case * * @param testName name of the test case */ public AppTest( String testName ) { super( testName ); }

  • 35

    /** * @return the suite of tests being tested */ public static Test suite() { return new TestSuite( AppTest.class ); } /** * Rigourous Test :-) */ public void testApp() { assertTrue( true ); } }

    Los desarrolladores deben colocar sus ficheros de código de acuerdo a lo mencionado en la tabla mostrada anteriormente, para que Maven pueda gestionar el proyecto.

  • 36

    Construcción y Validación del proyecto Java utilizando Maven

    Hasta ahora se ha visto como crear una aplicación Java utilizando Maven. Ahora nos centraremos en cómo construir y validar la aplicación.

    Edite el fichero pom.xml ubicado en C:\dawsjee\mvn\pr10. El contenido del fichero pom.xml debe ser algo parecido al siguiente código:

    4.0.0 com.curso.jee pr10 jar 1.0-SNAPSHOT pr10 http://maven.apache.org junit junit 3.8.1 test

    Observe que Maven agrego el marco de trabajo “junit”. Además creo los ficheros App.java y AppTest.

    En una consola de comandos ejecute el siguiente comando mvn:

    C:\dawsjee\mvn\pr10>mvn clean package

    La salida que se genera es:

    C:\dawsjee\mvn\pr10>mvn clean package [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Building pr10 [INFO] task-segment: [clean, package] [INFO] ------------------------------------------------------------------------ [INFO] [clean:clean {execution: default-clean}] [INFO] [resources:resources {execution: default-resources}] [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory C:\dawsjee\mvn\pr10\src\main\resource s [INFO] [compiler:compile {execution: default-compile}] [INFO] Compiling 1 source file to C:\dawsjee\mvn\pr10\target\classes [INFO] [resources:testResources {execution: default-testResources}] [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory C:\dawsjee\mvn\pr10\src\test\resource s [INFO] [compiler:testCompile {execution: default-testCompile}] [INFO] Compiling 1 source file to C:\dawsjee\mvn\pr10\target\test-classes [INFO] [surefire:test {execution: default-test}] [INFO] Surefire report directory: C:\dawsjee\mvn\pr10\target\surefire-reports

  • 37

    ------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.curso.jee.AppTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [jar:jar {execution: default-jar}] [INFO] Building jar: C:\dawsjee\mvn\pr10\target\pr10-1.0-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1 second [INFO] Finished at: Sat Dec 08 22:39:10 CET 2012 [INFO] Final Memory: 20M/224M [INFO] ------------------------------------------------------------------------

    Felicitaciones, usted ya ha creado su proyecto y ha creado un fichero .jar.

    Se ha generado la carpeta target.

  • 38

    Dentro de esta carpeta se tuene un fichero pr10-1.0-SNAPSHOT.jar

    A continuación se listan los conceptos de aprendizaje clave:

    • Se dieron 2 metas. La primera para borrar el directorio “target” (meta cklean)y la segunda para empacar el proyecto en formato jar.

    • El fichero empacado “pr10-1.0-SNAPSHOT.jar” se encuentra en la carpeta pr10\target.

    • Los informes de “Test” se encuentran disponibles en la carpeta pr10\target\surefire-reports folder.

    • Maven se ha encargado de compilar los ficheros con código fuente y los ficheros con código fuente para ejecutar los tests.

    • Maven ejecuta los casos de prueba. • Finalmente, Maven genero el fichero .jar

  • 39

    Finalmente, abra una consola de comandos, colóquese en la carpeta C:\dawsjee\pr10\target\classes y ejecute el siguiente comando java:

    C:\dawsjee\mvn\pr10\target\classes>java com.curso.jee.App

    El resultado debe ser la cadena de texto:

    Hello World!

    ¿Cómo agregar ficheros con código Java? En la carpeta C:\dawsjee\mvn\pr10\src\main\java\com\curso\jee debe crear un fichero con el nombre Util.java

    El contenido de este fichero debe ser:

    package com.curso.jee; public class Util { public static void printMessage(String message){ System.out.println(message); } } Actualiza el fichero App.java para que tenga este código: package com.curso.jee; public class App { public static void main( String[] args ) { Util.printMessage("Bienvenido al curso de JEE!"); } }

    Abra una consola de comandos y ejecute el siguiente comando mvn:

    C:\dawsjee\mvn\pr10>mvn clean compile C:\dawsjee\mvn\pr10>mvn clean compile [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Building pr10 [INFO] task-segment: [clean, compile] [INFO] ------------------------------------------------------------------------ [INFO] [clean:clean {execution: default-clean}] [INFO] Deleting directory C:\dawsjee\mvn\pr10\target [INFO] [resources:resources {execution: default-resources}] [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory C:\dawsjee\mvn\pr10\src\main\resource s [INFO] [compiler:compile {execution: default-compile}] [INFO] Compiling 2 source files to C:\dawsjee\mvn\pr10\target\classes [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: < 1 second [INFO] Finished at: Sun Dec 09 07:48:07 CET 2012 [INFO] Final Memory: 12M/154M [INFO] ------------------------------------------------------------------------ Ahora ejecute la clase App.class

  • 40

    C:\dawsjee\mvn\pr10\target\classes>java com.curso.jee.App

    En la consola debe aparecer lo siguiente:

    Dependencias externas en Maven

    Maven realiza la gestión de dependencias utilizando el concepto de repositorios Maven.

    Pero ¿qué sucede si la dependencia no está disponible en cualquiera de los repositorios remotos y repositorio central?

    Maven ofrece la respuesta para tal escenario utilizando el concepto de dependencia externa. En el proyecto creado en la sección anterior, realice los siguientes cambios .

    • En la carpeta “src” se debe agregar una carpeta con el nombre lib • Haga una copia del fichero mysql-connector-java-5.1.22-bin.jar y póngala en la

    carpeta lib.

    Ahora nuestra estructura de proyecto debe ser como la siguiente:

  • 41

    El proyecto ya tiene una librería específica propia, cosa común en los proyectos Java. Si construye el proyecto tal y como está ahora Maven generará un mensaje de error, debido a que Maven no puede descargar o referenciar esta biblioteca durante la fase de compilación.

    Para solucionar este problema, se debe agregar información acerca de la dependencia externa en el pom.xml

    4.0.0 com.companyname.bank consumerBanking jar 1.0-SNAPSHOT consumerBanking http://maven.apache.org junit junit 3.8.1 test

  • 42

    mysql-connector-java mysql-connector-java system 1.0 ${basedir}\src\lib\ mysql-connector-java-5.1.22-bin.jar

    Puntos a tener en cuenta, en lo referente a dependencias externas:

    Las dependencias externas son configuradas, en el fichero pom.xml, de la misma forma que las dependencias locales.

    • Debe especificar un “groupId” igual al nombre de la biblioteca. • Debe especificar el “artifactId” con el mismo nombre que la biblioteca. • Debe especificar el “scope” como “system”. • Debe indicar la ruta, en donde está el fichero, utilizando una ruta relativa a la

    ubicación del proyecto.

    Documentación de un Proyecto Maven Este tutorial le mostrará cómo crear documentación de la aplicación de una sola vez. Así que vamos a empezar, vaya al directorio c:\dawsjee\mvn\pr10 . Ejecute el siguiente comando mvn.

    c:\dawsjee\mvn\pr10

    C:\dawsjee\mvn\pr10>mvn site

    [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Building pr10 [INFO] task-segment: [site] [INFO] ------------------------------------------------------------------------ [INFO] [site:site {execution: default-site}] [INFO] artifact org.apache.maven.skins:maven-default-skin: checking for updates from jboss [INFO] artifact org.apache.maven.skins:maven-default-skin: checking for updates from central [INFO] Generating "About" report. [INFO] Generating "Issue Tracking" report. [INFO] Generating "Project Team" report. [INFO] Generating "Dependencies" report. [INFO] Generating "Continuous Integration" report. [INFO] Generating "Source Repository" report. [INFO] Generating "Project License" report. [INFO] Generating "Mailing Lists" report. [INFO] Generating "Plugin Management" report. [INFO] Generating "Project Summary" report. [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4 seconds

  • 43

    [INFO] Finished at: Sun Dec 09 08:14:03 CET 2012 [INFO] Final Memory: 31M/350M [INFO] ------------------------------------------------------------------------

    C:\dawsjee\mvn\pr10>

    Eso es todo. La documentación del proyecto esta lista. Maven ha generado una carpeta “site” dentro de la carpeta target.

    • • Pulse sobre el fichero index.html para ver la documentación generada.

  • 44

    • • Maven genera la documentación utilizando la aplicación Doxia. Si desea crear

    documentación acerca de su proyecto, puede utilizar los siguientes formatos: •

    Format Name Description Reference

    APT Formato de documento de texto plano.

    http://maven.apache.org/doxia/format.html

    XDoc Formato de documentación para Maven 1.0

    http://jakarta.apache.org/site/jakarta-site2.html

    http://maven.apache.org/doxia/format.htmlhttp://jakarta.apache.org/site/jakarta-site2.html

  • 45

    FML Utilizado para documentos tipo FAQ

    http://maven.apache.org/doxia/references/fml-format.html

    XHTML HTML Extensible http://en.wikipedia.org/wiki/XHTML

    Plantillas (Templates) del Proyecto Maven Maven ofrece a los usuarios, una lista muy grande de diferentes tipos de plantillas de proyecto (más de 614). Maven utiliza el concepto de arquetipo. Para iniciar rápidamente un nuevo proyecto java, basta con ejecutar siguiente comando

    mvn archetype:generate

    ¿Qué es un arquetipo? Un arquetipo es un plugin de Maven, cuya tarea es crear una estructura de proyecto de acuerdo a una plantilla. A continuación, vamos a usar un arquetipo para crear una aplicación java sencilla.

    Utilización de una plantilla de proyecto En una consola de comandos, colocarse en la carpeta c:\dawsjee\mvn y ejecutar el siguiente comando mvn:

    C:\MVN>mvn archetype:generate

    Maven will start processing and will ask to choose required archetype

    [INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'archetype'. [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Default Project [INFO] task-segment: [archetype:generate] (aggregator-style) [INFO] ------------------------------------------------------------------------ [INFO] Preparing archetype:generate [INFO] No goals needed for project - skipping [INFO] [archetype:generate {execution: default-cli}] [INFO] Generating project in Interactive mode [INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0) Choose archetype: 1: remote -> br.gov.frameworkdemoiselle.archetypes:demoiselle-jsf-jpa (Archetype for web applications (JSF + JPA) using Demoiselle Framework) 2: remote -> br.gov.frameworkdemoiselle.archetypes:demoiselle-minimal (Basic archetype for generic applications using Demoiselle Framework) 3: remote -> br.gov.frameworkdemoiselle.archetypes:demoiselle-vaadin-jpa (Archetype for Vaadin web applications) 4: remote -> co.ntier:spring-mvc-archetype (An extremely simple Spring MVC archetype, configured with NO XML.) 5: remote -> com.agilejava.docbkx:docbkx-quickstart-archetype (-) 6: remote -> com.alibaba.citrus.sample:archetype-webx-quickstart (-) 7: remote -> com.bsb.common.vaadin:com.bsb.common.vaadin.embed-simple-archetype (-) 8: remote -> com.bsb.common.vaadin:com.bsb.common.vaadin7.embed-simple-archetype (-) 9: remote -> com.cedarsoft.open.archetype:multi (-) 10: remote -> com.cedarsoft.open.archetype:simple (-)

    http://maven.apache.org/doxia/references/fml-format.htmlhttp://maven.apache.org/doxia/references/fml-format.htmlhttp://en.wikipedia.org/wiki/XHTML

  • 46

    11: remote -> com.dyuproject.protostuff.archetype:basic-gwt-webapp (webapp archetype using protostuff, json and gwt) 12: remote -> com.dyuproject.protostuff.archetype:basic-webapp (webapp archetype using protostuff, json and jquery) 13: remote -> com.dyuproject.protostuff.archetype:simple-gwt-webapp (webapp archetype using protobuf, json and gwt) 14: remote -> com.dyuproject.protostuff.archetype:simple-webapp (webapp archetype using protobuf, json and jquery) 15: remote -> com.force.sdk:springmvc-archetype (-) 16: remote -> com.github.igor-petruk.archetypes:maven-archetype-executable (Executable Quickstart Archetype that is ready to run with 'java -jar') 17: remote -> com.github.igor-petruk.archetypes:maven-archetype-scala-executable (Creates executable Scala Project that is ready to run with 'java -jar') 18: remote -> com.github.jpaoletti:jpm-archetype (Archetype for a jpm-struts1-bootstrap project) 19: remote -> com.github.lalyos:standalone-jpa-eclipselink-archetype (StandAlone (j2se) jpa project with eclipseLink implementations using embedded DerbiDB) 20: remote -> com.github.venkatramanm.swf-all:swf-archetype (Archetype to create apps using SWF) 21: remote -> com.github.venkatramanm.swf-all:swf-plugin-archetype (Archetype to create plugins for SWF) 22: remote -> com.google.code.plsqlmaven:plsql-package-archetype (a sample archetype that creates a project with a PL/SQL package inside and extends the parent project) 23: remote -> com.google.code.plsqlmaven:plsql-project-archetype (preconfigured PL/SQL project) 24: remote -> com.google.code.plsqlmaven:plsql-webapp-archetype (preconfigured PL/SQL webapp) 25: remote -> com.google.sitebricks:sitebricks-jetty-archetype (-) 26: remote -> com.googlecode.android-player-root-archetype:parent-archetype (-) 27: remote -> com.googlecode.apparat:apparat-archetype-asm (-) 28: remote -> com.googlecode.apparat:apparat-archetype-tdsi (-) 29: remote -> com.googlecode.etl-unit:etlunit-feature-archetype (-) 30: remote -> com.googlecode.etl-unit:etlunit-project-archetype (-) 31: remote -> com.googlecode.gwtquery:gquery-archetype (This archetype generates a Gwt-2.5.0-rc1 project with all set to use GwtQuery and its plugins.) 32: remote -> com.googlecode.gwtquery:gquery-plugin-archetype (-) 33: remote -> com.googlecode.jannocessor:jannocessor-sample-archetype (Multi-module sample project for annotation-driven source code generation with JAnnocessor) 34: remote -> com.googlecode.jdbc-proc:jdbc-proc-archetype (Creates simple project with jdbc-proc support) 35: remote -> com.googlecode.metridoc:metridoc-archetype (-) 36: remote -> com.googlecode.playn:playn-archetype (Archetype for PlayN game projects.) 37: remote -> com.highwise:weby (A simple spring mvc + hibernate project archetype) 38: remote -> com.jgeppert.struts2.jquery:struts2-jquery-archetype-base (This Archetype provides a Webapp Configuration ready for the Struts2 jQuery Plugin.) 39: remote -> com.jgeppert.struts2.jquery:struts2-jquery-archetype-mobile (This Archetype provides a Webapp Configuration ready for the Struts2 jQuery Mobile Plugin.) 40: remote -> com.jgeppert.struts2.jquery:struts2-jquery-bootstrap-archetype-grid (This Archetype provides a Webapp Configuration ready for the Struts2 jQuery Grid Plugin and the Struts2 Bootstrap Plugin.) 41: remote -> com.liferay.maven.archetypes:liferay-ext-archetype (Provides an archetype to create Liferay extensions.) 42: remote -> com.liferay.maven.archetypes:liferay-hook-archetype (Provides an archetype to create Liferay hooks.) 43: remote -> com.liferay.maven.archetypes:liferay-layouttpl-archetype (Provides an archetype to create Liferay layout templates.) 44: remote -> com.liferay.maven.archetypes:liferay-portlet-archetype (Provides an archetype to create Liferay portlets.) 45: remote -> com.liferay.maven.archetypes:liferay-portlet-icefaces-archetype (Provides an archetype to create Liferay ICEfaces portlets.) 46: remote -> com.liferay.maven.archetypes:liferay-portlet-jsf-archetype (Provides an archetype to create Liferay JSF portlets.) 47: remote -> com.liferay.maven.archetypes:liferay-portlet-liferay-faces-alloy-archetype (Provides an archetype to create Liferay Faces Alloy portlets.) 48: remote -> com.liferay.maven.archetypes:liferay-portlet-primefaces-archetype (Provides an archetype to create Liferay PrimeFaces portlets.) 49: remote -> com.liferay.maven.archetypes:liferay-portlet-richfaces-archetype (Provides an archetype to create Liferay RichFaces portlets.) 50: remote -> com.liferay.maven.archetypes:liferay-servicebuilder-archetype (Provides an archetype to create Liferay Service Builder portlets.) 51: remote -> com.liferay.maven.archetypes:liferay-theme-archetype (Provides an archetype to create Liferay themes.) 52: remote -> com.liferay.maven.archetypes:liferay-web-archetype (Provides an archetype to create Liferay webs.) 53: remote -> com.lordofthejars.thymeleafarchetype:thymeleaf-spring-maven-archetype (Thymeleaf Spring Maven Archetype) 54: remote -> com.matthewjosephtaylor.archetypes:application-archetype (Maven archetype for a single-jar application) 55: remote -> com.mikenimer:extjs-springmvc-webapp (A maven Archetype to create new EXTJS project powered by a spring MVC service.)

  • 47

    56: remote -> com.mysema.rdf:rdfbean-tapestry-quickstart (Archetype for creating a basic RDFBean Tapestry 5 application.) 57: remote -> com.mysema.rdfbean:rdfbean-tapestry-quickstart (-) 58: remote -> com.nativelibs4java:javacl-simple-tutorial (-) 59: remote -> com.pojosontheweb:woko-archetype (-) 60: remote -> com.proofpoint.platform:sample-server-archetype (Sample server archetype) 61: remote -> com.proofpoint.platform:skeleton-server-archetype (Skeleton server archetype) 62: remote -> com.pyx4me:j2me-simple (Maven 2 Archetype for midlet application using j2me-maven-plugin) 63: remote -> com.sixdimensions.wcm.cq:cq-deploy-plugin (Maven plugin for automating code deployments to Adobe CQ.) 64: remote -> com.sixsq.slipstream:slipstream-module (-) 65: remote -> com.sun.faces.regression:i_jsf_XXXX-archetype (-) 66: remote -> com.sun.faces.test:i_jsf_xxxx_htmlunit-archetype (-) 67: remote -> com.sun.jersey.archetypes:jersey-quickstart-ejb (An archetype which contains a simple Jersey based EJB project.) 68: remote -> com.sun.jersey.archetypes:jersey-quickstart-grizzly (An archetype which contains a quickstart Jersey project based on Grizzly container.) 69: remote -> com.sun.jersey.archetypes:jersey-quickstart-grizzly2 (An archetype which contains a quickstart Jersey project based on Grizzly2 container.) 70: remote -> com.sun.jersey.archetypes:jersey-quickstart-webapp (An archetype which contains a sample Jersey based Webapp project.) 71: remote -> com.taobao.itest:itest-sample-s30-archetype (-) 72: remote -> com.tqlab.sense:tqlab-sense-archetype (tqlab sense archetype) 73: remote -> com.vaadin:vaadin-archetype-addon (-) 74: remote -> com.vaadin:vaadin-archetype-application (This archetype generates a simple Vaadin application as a Maven project.) 75: remote -> com.vaadin:vaadin-archetype-clean (This archetype generates a simple Vaadin application as a Maven project. No custom widgetset is included.) 76: remote -> com.vaadin:vaadin-archetype-jpacontainer (This archetype generates a simple Vaadin application using JPAContainer as a Maven project.) 77: remote -> com.vaadin:vaadin-archetype-portlet (This archetype creates a simple porlet with required Vaadin dependencies. In addition to standard JSR 286 configurations the archetype also adds liferay specific configuration files, but they shoudn't affect other portals.) 78: remote -> com.vaadin:vaadin-archetype-sample (This archetype generates a Vaadin application as a Maven project. The application contains a custom GWT widgetset that is compiled by the GWT compiler and integrated into the project as part of the build process. The application is based on the Vaadin Color Picker Demo application available at http://vaadin.com.) 79: remote -> com.vaadin:vaadin-archetype-touchkit (This archetype generates a simple Vaadin application using TouchKit as a Maven project.) 80: remote -> com.vaadin:vaadin-archetype-widget (This archetype generates a Vaadin widget project for Vaadin 6.2+ and a test application.) 81: remote -> com.vaadin:vaadin-maven-plugin (Maven plugin for Vaadin.) 82: remote -> com.willowtreeapps:oak-archetype (-) 83: remote -> com.zenjava:javafx-basic-archetype (The JavaFX Basic Archetype provides core functionality for assembling JavaFX applications.) 84: remote -> com.zenjava:javafx-rest-archetype (The JavaFX Basic Archetype provides a Maven archetype for generating a basic JavaFX REST client-server starter project.) 85: remote -> de.akquinet.android.archetypes:android-quickstart (Creates a skeleton for an Android application) 86: remote -> de.akquinet.android.archetypes:android-release (Creates a skeleton for an Android application, instrumentation tests and ready-to-publish application on releases.) 87: remote -> de.akquinet.android.archetypes:android-with-test (Creates a skeleton for an Android application and instrumentation tests) 88: remote -> de.akquinet.chameria:chameria-quickstart-archetype (-) 89: remote -> de.akquinet.javascript.archetypes:javascript-jqueryplugin (-) 90: remote -> de.akquinet.javascript.archetypes:javascript-quickstart (-) 91: remote -> de.akquinet.jbosscc:jbosscc-javaee6-modular-ear-archetype (Maven Archetype to generate a modular Java EE 6 based project skeleton.) 92: remote -> de.akquinet.jbosscc:jbosscc-seam-archetype (Maven Archetype to generate a Seam Application - running on JBoss AS7) 93: remote -> de.cologneintelligence:archetype-fitgoodies-quickstart (Archetype which generates an FitGoodies-enabled example project) 94: remote -> de.crowdcode.kissmda.maven:kissmda-maven-app-archetype (-) 95: remote -> de.crowdcode.kissmda.maven:kissmda-maven-cartridge-archetype (-) 96: remote -> de.saumya.mojo:rails-maven-archetype (-)

  • 48

    97: remote -> de.schlichtherle:javafx-scala-demo (An archetype for a standalone JavaFX 2.0 application written in Scala. The generated application is translated from the Colorful Circles demo from the JavaFX 2.0 SDK.) 98: remote -> de.schlichtherle.truezip:truezip-archetype-file (TrueZIP File* module application - requires JSE 6.) 99: remote -> de.schlichtherle.truezip:truezip-archetype-path (TrueZIP Path module application - requires JSE 7.) 100: remote -> dk.jacobve.maven.archetypes:maven-archetype-flex (An archetype which contains a sample Maven Flex project using the israfil maven plugin) 101: remote -> es.ucm.fdi.grasia.faerie.archetypes:basic (Project for definition and implementation of an architecture/framework for Ambient-Assited Living systems) 102: remote -> eu.vitaliy:java6se-spring3-archetype (Simple spring 3 archetype) 103: remote -> io.airlift:sample-server-archetype (Sample server archetype) 104: remote -> io.airlift:skeleton-server-archetype (Skeleton server archetype) 105: remote -> it.amattioli.archetypes:javate-zk-archetype (-) 106: remote -> it.tidalwave.netbeans:netbeans-platform-archetype (Tidalwave NetBeans Platform Archetype) 107: remote -> it.tidalwave.northernwind:simple-project-site-archetype-1 (-) 108: remote -> it.tidalwave.northernwind:simple-site1-step1-archetype (-) 109: remote -> it.tidalwave.thesefoolishthings:project-archetype (TheseFoolishThings - Project Archetype) 110: remote -> javax.faces:javax.faces-war-archetype (-) 111: remote -> jboss:mobicents-ra-mavenization-archetype (-) 112: remote -> net.avh4.mvn.archetype:java-1.6-archetype (-) 113: remote -> net.contextfw:web-quickstart (Context Web Application Framework - Quickstart) 114: remote -> net.databinder:data-app (To make creating a new Databinder application easier, this archetype includes all required sources and resources.) 115: remote -> net.databinder.maven.net.databinder:data-app (To make creating a new Databinder application easier, this archetype includes all required sources and resources.) 116: remote -> net.devonlinux.solr:solr-quickstart-archetype (-) 117: remote -> net.devonlinux.solr:solr-quickstart-archetype-no-acceptance-tests (-) 118: remote -> net.flexmojos.oss:flexmojos-archetypes-application (-) 119: remote -> net.flexmojos.oss:flexmojos-archetypes-library (-) 120: remote -> net.flexmojos.oss:flexmojos-archetypes-modular-webapp (-) 121: remote -> net.java.truevfs:truevfs-archetype-access (Showcases the client API of the module TrueVFS Access.) 122: remote -> net.java.truevfs:truevfs-archetype-profile (Creates a custom TrueVFS Profile which bundles all selected TrueVFS modules for ease of use with and without Maven.) 123: remote -> net.kindleit:gae-archetype-gwt (Archetype for creating maven-gae projects that uses GWT for the view) 124: remote -> net.kindleit:gae-archetype-jsf (Archetype for creating maven-gae projects that works under Java Server Faces) 125: remote -> net.kindleit:gae-archetype-jsp (Archetype for creating maven-gae projects that uses jsp for the view) 126: remote -> net.kindleit:gae-archetype-objectify-jsp (Archetype for creating maven-gae projects that uses jsp for the view and Objectify for the ORM.) 127: remote -> net.kindleit:gae-archetype-wicket (Archetype for creating maven-gae projects based on apache wicket framework) 128: remote -> net.liftweb:lift-archetype-basic (Basic project archetype for Lift Web Framework (with database, logging, user management).) 129: remote -> net.liftweb:lift-archetype-basic_2.7.7 (Basic project archetype for Lift Web Framework (with database, logging, user management).) 130: remote -> net.liftweb:lift-archetype-basic_2.8.0 (Basic project archetype for Lift Web Framework (with database, logging, user management).) 131: remote -> net.liftweb:lift-archetype-basic_2.8.1 (-) 132: remote -> net.liftweb:lift-archetype-basic_2.9.1 (Basic project archetype for Lift Web Framework (with database, logging, user management).) 133: remote -> net.liftweb:lift-archetype-blank (Blank project archetype for Lift Web Framework.) 134: remote -> net.liftweb:lift-archetype-blank_2.7.7 (Blank project archetype for Lift Web Framework.) 135: remote -> net.liftweb:lift-archetype-blank_2.8.0 (Blank project archetype for Lift Web Framework.) 136: remote -> net.liftweb:lift-archetype-blank_2.8.1 (-) 137: remote -> net.liftweb:lift-archetype-blank_2.9.1 (Blank project archetype for Lift Web Framework.) 138: remote -> net.liftweb:lift-archetype-hellolift (Archetype - hellolift, a sample Lift application) 139: remote -> net.liftweb:lift-archetype-jpa-basic (Basic JPA archetype for Lift Web Framework.) 140: remote -> net.liftweb:lift-archetype-jpa-basic_2.7.7 (Basic JPA archetype for Lift Web Framework.) 141: remote -> net.liftweb:lift-archetype-jpa-basic_2.8.0 (Basic JPA archetype for Lift Web Framework.) 142: remote -> net.liftweb:lift-archetype-jpa-basic_2.8.1 (-) 143: remote -> net.liftweb:lift-archetype-jpa-basic_2.9.1 (Basic JPA archetype for Lift Web Framework.) 144: remote -> net.liftweb:lift-archetype-jpa-blank (Blank JPA archetype for Lift Web Framework.) 145: remote -> net.liftweb:lift-archetype-jpa-blank-single (Blank JPA archetype for Lift Web Framework (single project).)

  • 49

    146: remote -> net.liftweb:lift-archetype-jpa-blank-single_2.7.7 (Blank JPA archetype for Lift Web Framework (single project).) 147: remote -> net.liftweb:lift-archetype-jpa-blank-single_2.8.0 (Blank JPA archetype for Lift Web Framework (single project).) 148: remote -> net.liftweb:lift-archetype-jpa-blank-single_2.8.1 (-) 149: remote -> net.liftweb:lift-archetype-jpa-blank-single_2.9.1 (Blank JPA archetype for Lift Web Framework (single project).) 150: remote -> net.liftweb:lift-archetype-jpa-blank_2.7.7 (Blank JPA archetype for Lift Web Framework.) 151: remote -> net.liftweb:lift-archetype-jpa-blank_2.8.0 (Blank JPA archetype for Lift Web Framework.) 152: remote -> net.liftweb:lift-archetype-jpa-blank_2.8.1 (-) 153: remote -> net.liftweb:lift-archetype-jpa-blank_2.9.1 (Blank JPA archetype for Lift Web Framework.) 154: remote -> net.liftweb:lift-archetype-sbt (Basic project archetype for Lift Web Framework (with database, logging, user management) using the sbt build system) 155: remote -> net.liftweb:lift-archetype-sbt_2.7.7 (Basic project archetype for Lift Web Framework (with database, logging, user management) using the sbt build system) 156: remote -> net.liftweb:lift-archetype-sbt_2.8.0 (Basic project archetype for Lift Web Framework (with database, logging, user management) using the sbt build system) 157: remote -> net.liftweb:lift-archetype-sbt_2.8.1 (-) 158: remote -> net.liftweb:lift-archetype-sbt_2.9.1 (Basic project archetype for Lift Web Framework (with database, logging, user management) using the sbt build system) 159: remote -> net.officefloor.maven:woof-archetype (Archetype to generate a WoOF project) 160: remote -> net.phaedra:phaedra-archetype (-) 161: remote -> net.sf.ingenias:iafarch-empty (-) 162: remote -> net.sf.ingenias:iafarch-gui (-) 163: remote -> net.sf.ingenias:iafarch-helloworld (-) 164: remote -> net.sf.ingenias:iafarch-interaction (-) 165: remote -> net.sf.itcb.archetype:common-archetype (Archetype that might be used by IT managers in order to create the common packages of custom IT. groupId, artifactId, package, version, companyMainGroupId, companyMainArtifactId, companyMainVersion, company, companyUrl have to be defined in archetype execution. By convention, we recommend to call this module common-"yourcompany".) 166: remote -> net.sf.itcb.archetype:main-archetype (Archetype that might be used by IT managers in order to create the base of custom IT. archetypeId, groupId, version, company and companyUrl have to be defined in archetype execution. By convention, we recommend to call this module main-"yourcompany".) 167: remote -> net.sf.jlue:jlue-archetype-basic (Archetype - basic project for Jlue) 168: remote -> net.sf.jlue:jlue-archetype-blank (Archetype - blank project for Jlue) 169: remote -> net.sf.maven-har:maven-archetype-har (-) 170: remote -> net.sf.maven-sar:maven-archetype-sar (-) 171: remote -> net.sf.mgp:maven-archetype-gwt (An archetype which contains a sample Maven GWT project.) 172: remote -> net.sf.portletunit:portletunit-portlet-archetype (An archetype that creates a simple porltet with unit tests.) 173: remote -> net.sf.squirrel-sql.plugins:squirrelsql-plugin-archetype (This project produces the maven archetype that can be used to generate a SQuirreL Plugin maven project. The project that is produced contains an Example plugin that demonstrates the use of key plugin APIs.) 174: remote -> net.sourceforge.ota-tools.schema:ota-tools-schema-archetype (-) 175: remote -> net.thejeearchitectcookbook:jsf-jqmobile-archetype (JSF 2 and JQuery Mobile basic web archetype.) 176: remote -> net.thucydides:thucydides-easyb-archetype (Thucydides automated acceptance testing project using Selenium 2, JUnit and easyb) 177: remote -> net.thucydides:thucydides-simple-archetype (Thucydides automated acceptance testing project using Selenium 2 and JUnit) 178: remote -> no.tornado:modular-app-archetype (Modular application archetype based on Tornado Inject - One service and one client module.) 179: remote -> org.antlr:antlr3-maven-archetype (ANTLR 3 Maven Archetype) 180: remote -> org.apache.archiva:archiva-consumer-archetype (Simple archetype to create archiva consumers) 181: remote -> org.apache.avro:avro-service-archetype (Archetype that generates a simple example Avro service) 182: remote -> org.apache.camel:camel-component (-) 183: remote -> org.apache.camel:camel-router (-) 184: remote -> org.apache.camel.archetypes:camel-archetype-activemq (Creates a new Camel project that configures and interacts with ActiveMQ.) 185: remote -> org.apache.camel.archetypes:camel-archetype-blueprint (Creates a new Camel project with OSGi blueprint support. Ready to be deployed in OSGi.) 186: remote -> org.apache.camel.archetypes:camel-archetype-component (Creates a new Camel component.) 187: remote -> org.apache.camel.archetypes:camel-archetype-component-scala (Creates a new Camel component with Scala.) 188: remote -> org.apache.camel.archetypes:camel-archetype-dataformat (Creates a new Camel data format.)

  • 50

    189: remote -> org.apache.camel.archetypes:camel-archetype-java (Creates a new Camel project using Java DSL.) 190: remote -> org.apache.camel.archetypes:camel-archetype-scala (Creates a new Camel project using Scala DSL.) 191: remote -> org.apache.camel.archetypes:camel-archetype-spring (Creates a new Camel project with added Spring DSL support.) 192: remote -> org.apache.camel.archetypes:camel-archetype-spring-dm (Creates a new Camel project with added Spring DSL support. Ready to be deployed in OSGi.) 193: remote -> org.apache.camel.archetypes:camel-archetype-war (-) 194: remote -> org.apache.camel.archetypes:camel-archetype-web (Creates a new Camel web project that deploys the Camel routes as a WAR) 195: remote -> org.apache.camel.archetypes:camel-archetype-webconsole (Creates a new Camel project that deploys the Camel Web Console, REST API, and your routes as a WAR) 196: remote -> org.apache.clerezza:internal.archetype (Generic archetype for clerezza projects) 197: remote -> org.apache.cocoon:cocoon-22-archetype-block (-) 198: remote -> org.apache.cocoon:cocoon-22-archetype-block-plain (-) 199: remote -> org.apache.cocoon:cocoon-22-archetype-webapp (-) 200: remote -> org.apache.cocoon.archetype-block:cocoon-archetype-block (-) 201: remote -> org.apache.cocoon.archetype-parent:cocoon-archetype-parent (-) 202: remote -> org.apache.cocoon.archetype-sample:cocoon-archetype-sample (-) 203: remote -> org.apache.cocoon.archetype-webapp:cocoon-archetype-webapp (-) 204: remote -> org.apache.crunch:crunch-archetype (Create a basic, self-contained job for Apache Crunch.) 205: remote -> org.apache.cxf:cxf-http-basic (-) 206: remote -> org.apache.cxf.archetype:cxf-jaxrs-service (Simple CXF JAX-RS webapp service using Spring configuration) 207: remote -> org.apache.cxf.archetype:cxf-jaxws-javafirst (Creates a project for developing a Web service starting from Java code) 208: remote -> org.apache.directmemory.server:server-example-archetype (-) 209: remote -> org.apache.directory.server:apacheds-schema-archetype (-) 210: remote -> org.apache.directory.server:apacheds-testcase-archetype (-) 211: remote -> org.apache.felix:maven-ipojo-plugin (Maven Plugin to package iPOJO-powered bundles.) 212: remote -> org.apache.geronimo.buildsupport:geronimo-archetype-testsuite (Plugin to help create a testsuite) 213: remote -> org.apache.geronimo.buildsupport:geronimo-assembly-archetype (-) 214: remote -> org.apache.geronimo.buildsupport:geronimo-plugin-archetype (-) 215: remote -> org.apache.geronimo.plugins:geronimo-archetype-testsuite (Plugin to help create a testsuite) 216: remote -> org.apache.geronimo.samples:geronimo-samples-archetype (Plugin to help create a samples project) 217: remote -> org.apache.isis:quickstart-archetype (-) 218: remote -> org.apache.karaf.archetypes:archetypes-command (-) 219: remote -> org.apache.karaf.archetypes:karaf-assembly-archetype (An archetype for creating a Karaf assembly.) 220: remote -> org.apache.karaf.archetypes:karaf-blueprint-archetype (An archetype for creating a simple blueprint bundle.) 221: remote -> org.apache.karaf.archetypes:karaf-bundle-archetype (A simple bundle archetype.) 222: remote -> org.apache.karaf.archetypes:karaf-command-archetype (A Karaf command archetype.) 223: remote -> org.apache.karaf.archetypes:karaf-feature-archetype (This archetype sets up an empty karaf features project.) 224: remote -> org.apache.karaf.archetypes:karaf-kar-archetype (This archetype creates a KAR file from a provided features XML.) 225: remote -> org.apache.maven.archetypes:maven-archetype-archetype (An archetype which contains a sample archetype.) 226: remote -> org.apache.maven.archetypes:maven-archetype-j2ee-simple (An archetype which contains a simplifed sample J2EE application.) 227: remote -> org.apache.maven.archetypes:maven-archetype-marmalade-mojo (-) 228: remote -> org.apache.maven.archetypes:maven-archetype-mojo (An archetype which contains a sample a sample Maven plugin.) 229: remote -> org.apache.maven.archetypes:maven-archetype-plugin (An archetype which contains a sample Maven plugin.) 230: remote -> org.apache.maven.archetypes:maven-archetype-plugin-site (An archetype which contains a sample Maven plugin site. This archetype can be layered upon an existing Maven plugin project.) 231: remote -> org.apache.maven.archetypes:maven-archetype-portlet (An archetype which contains a sample JSR-268 Portlet.) 232: remote -> org.apache.maven.archetypes:maven-archetype-profiles (-) 233: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.) 234: remote -> org.apache.maven.archetypes:maven-archetype-site (An archetype which contains a sample Maven site which demonstrates some of the supported document types like APT, XDoc, and FML and demonstrates how to i18n your site. This archetype can be layered upon an existing Maven project.)

  • 51

    235: remote -> org.apache.maven.archetypes:maven-archetype-site-simple (An archetype which contains a sample Maven site.) 236: remote -> org.apache.maven.archetypes:maven-archetype-webapp (An archetype which contains a sample Maven Webapp project.) 237: remote -> org.apache.myfaces.buildtools:myfaces-archetype-codi-jsf12 (Archetype to create a new JSF 1.2 webapp based on MyFaces CODI) 238: remote -> org.apache.myfaces.buildtools:myfaces-archetype-codi-jsf20 (Archetype to create a new JSF 2.0 webapp based on MyFaces CODI) 239: remote -> org.apache.myfaces.buildtools:myfaces-archetype-core-integration-test (Archetype to create a new MyFaces core project used for integration tests via cargo and HtmlUnit. Projects created via this archetype aim to test specific issues from the MyFaces core JIRA issue tracker and can be directly added to the MyFaces core integration-tests module.) 240: remote -> org.apache.myfaces.buildtools:myfaces-archetype-helloworld (Archetype to create a new webapp based on myfaces) 241: remote -> org.apache.myfaces.buildtools:myfaces-archetype-helloworld-facelets (Archetype to create a new webapp based on MyFaces and Facelets) 242: remote -> org.apache.myfaces.buildtools:myfaces-archetype-helloworld-portlets (Archetype to create a new portlet webapp based on myfaces) 243: remote -> org.apache.myfaces.buildtools:myfaces-archetyp