martes, 10 de junio de 2014

Creación de un proyecto AMP com Maven 3.1.1 para Alfresco 4.2.e (Parte 1)

Arquetipos maven para alfresco 4.2.e
https://artifacts.alfresco.com/nexus/content/repositories/alfresco-docs/alfresco-lifecycle-aggregator/latest/archetypes/alfresco-amp-archetype/index.html
- Lo primero que se debera hacer es descargar maven en su ultima version 3.1.1
configurar el repositorio y las variables de entorno MAVEN_HOME M2_HOME
Descargar alfresco SDK para la version 4.2.e y configurarlo dentro de eclipse
Una vez realizadas esas tareas que las he explicado antes en otra entrada procedemos a la creacion de nuestro nuevo proyecto
Ingresamos a nuestro workspace configurado previamente en eclipse y ejecutamos el siguiente comando para invocar al arquetipo
$sudo mvn archetype:generate -DarchetypeCatalog=https://artifacts.alfresco.com/nexus/content/groups/public/archetype-catalog.xml -Dfilter=org.alfresco.maven.archetype:
a diferencia de versiones anteriores ahora solo existen dos arquetipos
Choose archetype:
1: https://artifacts.alfresco.com/nexus/content/groups/public/archetype-catalog.xml -> org.alfresco.maven.archetype:alfresco-amp-archetype (Sample project with full support for lifecycle and rapid development of AMPs (Alfresco Module Packages))
2: https://artifacts.alfresco.com/nexus/content/groups/public/archetype-catalog.xml -> org.alfresco.maven.archetype:alfresco-allinone-archetype (Sample multi-module project for All-in-One development on the Alfresco plaftorm. Includes modules for: Repository, AMP, Share, Solr, Web Quick Start and embedded Jetty run)
seleccionar la opcion 1 y digitamos los parametros respectivos lo mas importantes son los siguientes
group id : grupo para el proyecto artifact id : nombre del proyecto
los demas parametros se los puede dejar por defecto, al finalizar digitar la opcion "y" para aceptar la configuracion y listo
El siguiente paso es ingresar al proyecto creado y digitar el siguiente comando
# mvn eclipse:eclipse
Al ejecutar el comando se genera un error en las dependencias de maven, esto se debe a que las dependencias en el pom.xml estan referenciando a la opcion 4.2.b de alfresco realizamos el siguiente cambio en el archivo pom.xml de nuestro proyecto, para indicarle que la version con la que vamos a trabajar es la version 4.2.e
 
        org.alfresco
        4.2.e
        WARN
        alf_data_dev
        
        
        alfresco
        
        local
    
Una vez hechos estos cambios ejecutamos nuevamente el comando, y esta vez ya no nos generan errores de dependencias
# mvn eclipse:eclipse
para finalizar importamos nuestro proyecto en nuestra instancia de eclipse
Verificar las dependencia maven en el caso de las librerias spring-core spring-beans avalon-framework-api
El posible error que se genera es
, org.alfresco:alfresco-data-model:jar:4.2.c (provided), org.alfresco:alfresco-web-client:jar:4.2.c (provided)]: Failed to read artifact descriptor for org.apache.avalon.framework:avalon-framework-api :jar:4.3.1: Could not find artifact org.apache.avalon:avalon-framework:pom:1 in alfresco-public-snapshots (http://maven.alfresco.com/nexus/content/groups/public-snapshots) -> [Help 1] [ERROR]
En el siguiente post les mostrare como configurar nuestro modelo de contenido en el proyecto amp
algunaos comandos maven
mvn validate : nos valida nuestro proyecto
mvn clean : elimina la carpeta target de nuesto proyecto
mvn compile : compila nuestra codigo fuente java
mvn test : nos ejecuta los test de nuestro proyecto
mvn site : nos genera la documentacion de nuestro proyecto pmd, javadoc, etc..
mvn package : nos genera jar o war de nuestro proyecto
mvn install : nos instala nuestro proyecto en nuestro repositorio local
mvn deploy : nos instala nuestro proyecto en un repositorio remoto
mvn install -DskipTests=false : nos installa nuestro proyecto saltando la etapa de test
mvn install -Dmaven.test.skip=true
mvn dependency::tree :
mvn install -Pamp-to-war
mvn install -Pamp-to-war -Dalfresco.client.war=share
mvn clean -Ppurge
mvn install:install-file -Dfile=alfresco-web-framework-commons-4.2.e.jar -DgroupId=org.alfresco -DartifactId=alfresco-web-framework-commons -Dversion=4.2.e -Dpackaging=jar -DgeneratedPom=true
Archivo pom.xml

    4.0.0
    org.alfresco
    edmon-sample
    1.0-SNAPSHOT
    edmon-sample AMP project
    amp
    Manages the lifecycle of the edmon-sample AMP (Alfresco Module Package)

    
        org.alfresco.maven
        alfresco-sdk-parent
        1.0.2
    

    
    
         
        org.alfresco
        
        4.2.e
        WARN
        alf_data_dev
        
        alfresco
        
        org.alfresco
        
        4.2.e
        
        local
    

    
    
        
            
            
                ${alfresco.groupId}
                alfresco-platform-distribution
                ${alfresco.version}
                pom
                import
            
        
    
    
    
        
            ${alfresco.groupId}
            alfresco-repository
            ${alfresco.version}
            provided
        
        
        
            junit
            junit
            4.8.1
            test
        
        
         ${alfresco.groupId}
            alfresco-data-model
            ${alfresco.version}
            provided         
        
        
         
         ${alfresco.groupId}
            alfresco-core
            ${alfresco.version}
            provided         
        
        
        
         ${alfresco.groupId}
            alfresco-web-client
            ${alfresco.version}
            provided         
        
        
        
         ${alfresco.groupId}
            alfresco-web-framework-commons
            ${alfresco.version}
            provided         
        
        
        
   org.apache.avalon.framework
   avalon-framework-api
   4.3.1
   provided
  
        
    

    
    
        
            alfresco-public
            https://artifacts.alfresco.com/nexus/content/groups/public
        
        
            alfresco-public-snapshots
            https://artifacts.alfresco.com/nexus/content/groups/public-snapshots
            
                true
                daily